ZQuest Classic Coverage Report


Directory: src/
File: src/parser/y.tab.cpp
Date: 2025-05-10 03:10:39
Exec Total Coverage
Lines: 1104 1758 62.8%
Functions: 39 51 76.5%
Branches: 853 2306 37.0%

Line Branch Exec Source
1 /* A Bison parser, made by GNU Bison 3.8.2. */
2
3 /* Skeleton implementation for Bison GLR parsers in C
4
5 Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <https://www.gnu.org/licenses/>. */
19
20 /* As a special exception, you may create a larger work that contains
21 part or all of the Bison parser skeleton and distribute that work
22 under terms of your choice, so long as that work isn't itself a
23 parser generator using the skeleton or a modified version thereof
24 as a parser skeleton. Alternatively, if you modify or redistribute
25 the parser skeleton itself, you may (at your option) remove this
26 special exception, which will cause the skeleton and the resulting
27 Bison output files to be licensed under the GNU General Public
28 License without this special exception.
29
30 This special exception was added by the Free Software Foundation in
31 version 2.2 of Bison. */
32
33 /* C GLR parser skeleton written by Paul Hilfinger. */
34
35 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
36 especially those whose name start with YY_ or yy_. They are
37 private implementation details that can be changed or removed. */
38
39 /* Identify Bison output, and Bison version. */
40 #define YYBISON 30802
41
42 /* Bison version string. */
43 #define YYBISON_VERSION "3.8.2"
44
45 /* Skeleton name. */
46 #define YYSKELETON_NAME "glr.c"
47
48 /* Pure parsers. */
49 #define YYPURE 0
50
51
52
53
54
55
56 /* First part of user prologue. */
57 #line 8 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
58
59 #include "parserDefs.h"
60 #include <stdlib.h>
61 #include <stdio.h>
62 #include <cassert>
63 #include <string>
64 #include <set>
65 #include <sstream>
66 #include "ASTVisitors.h"
67 #include "CompileOption.h"
68 #include "zsyssimple.h"
69 #include "parser/ParserHelper.h"
70 #include "base/util.h"
71
72 using std::string;
73 using std::ostringstream;
74 using namespace ZScript;
75
76 #define YYINCLUDED_STDLIB_H
77 extern int32_t yydebug;
78 extern int32_t yyrow;
79 extern int32_t yycol;
80 extern char* yytext;
81 extern int32_t yyleng;
82 extern int32_t yylex(void);
83 extern FILE *yyin, *yyout;
84 extern ZScript::AST* first_identifier_for_line;
85 extern void resetLexer();
86 void yyerror(std::shared_ptr<ASTFile>& root, const char* s);
87 void yymsg(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
88 void yywarn(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
89 void yyerrmsg(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
90 void yydb(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
91 std::string curfilename;
92 extern YYLTYPE noloc;
93
94 #define push_front(v, elem) (v).insert((v).begin(), elem)
95 void trunc_str(std::string& str, size_t sz, std::string const& header, int32_t row = yyrow,
96 int32_t col = yycol, char const* txt = yytext)
97 {
98 if(str.size() > sz)
99 {
100 yyerrmsg("ERROR: "+header+": String value '" + str + "' is too long. Max '"+std::to_string(sz)+"' characters.", row, col, txt);
101 str = str.substr(0,sz);
102 }
103 }
104
105 enum
106 {
107 ANNTY_NONE,
108 ANNTY_STR,
109 ANNTY_INT,
110 ANNTY_MAX
111 };
112 static string annot_tys[ANNTY_MAX] = {"Empty", "String", "Number"};
113
114 int annot_row, annot_col;
115 string annot_err_txt;
116 static const string annot_err_header = "ERROR: Bad Annotation Value";
117 struct AnnotData
118 {
119 string key, strval;
120 string val, unescaped_val;
121 zfix intval;
122 uint type;
123 };
124 void annot_errstr(string const& str)
125 {
126 yyerrmsg(str, annot_row, annot_col, annot_err_txt.c_str());
127 }
128 void annot_trunc_str(string& str, size_t size)
129 {
130 trunc_str(str, size, annot_err_header, annot_row, annot_col, annot_err_txt.c_str());
131 }
132 bool annot_type_check(uint expected, AnnotData const& data)
133 {
134 if(expected == data.type)
135 return true;
136 annot_errstr("ERROR: Bad Annotation Value: @"+data.key
137 +" expects a "+annot_tys[expected]+", not a "+annot_tys[data.type]);
138 return false;
139 }
140 void annot_incompatible(string const& key1, string const& key2)
141 {
142 annot_errstr(fmt::format("ERROR: Annotation '@{}' not compatible with '@{}'", key1, key2));
143 }
144 void handle_annotations(ASTAnnotationList* list, std::function<bool(AnnotData&)> fn)
145 {
146 owning_vector<ASTAnnotation>& set = list->set;
147 annot_row = list->location.first_line;
148 annot_col = list->location.first_column;
149 std::set<std::string> used_keys;
150 for(size_t q = 0; q < set.size(); ++q)
151 {
152 ASTAnnotation* a = set[q];
153 AnnotData data = AnnotData();
154 data.key = a->key->getValue();
155 data.type = ANNTY_NONE;
156 data.strval = "";
157 data.intval = 0;
158 if(a->strval)
159 {
160 data.type = ANNTY_STR;
161 data.strval = a->strval->getValue();
162 }
163 else if(a->intval)
164 {
165 data.type = ANNTY_INT;
166 data.intval = zslongToFix(a->intval->getValue(nullptr));
167 }
168
169 data.val = "";
170 data.unescaped_val = "";
171 switch(data.type)
172 {
173 case ANNTY_STR:
174 data.val = data.strval;
175 data.unescaped_val = util::disallow_escapes(util::escape_characters(data.strval));
176 break;
177 case ANNTY_INT:
178 data.val = data.unescaped_val = data.intval.str();
179 break;
180 }
181 annot_err_txt = "@" + data.key + "(" + data.val + ")";
182
183 if(used_keys.contains(data.key))
184 {
185 annot_errstr("ERROR: Duplicate Annotation Key: @"+data.key+" was already set.");
186 continue;
187 }
188 if(!fn(data))
189 annot_errstr("ERROR: Bad Annotation Key: '"+data.val+"'");
190 }
191 delete list;
192 }
193
194 ASTExpr* handle_statement_expr(ASTExpr* expr)
195 {
196 if(ASTExprIncrement* increm = dynamic_cast<ASTExprIncrement*>(expr))
197 {
198 increm->is_pre = true;
199 }
200 else if(ASTExprDecrement* decrem = dynamic_cast<ASTExprDecrement*>(expr))
201 {
202 decrem->is_pre = true;
203 }
204 return expr;
205 }
206
207 #pragma warning( disable : 4065 )
208
209 #line 210 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
210
211 # ifndef YY_CAST
212 # ifdef __cplusplus
213 # define YY_CAST(Type, Val) static_cast<Type> (Val)
214 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
215 # else
216 # define YY_CAST(Type, Val) ((Type) (Val))
217 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
218 # endif
219 # endif
220 # ifndef YY_NULLPTR
221 # if defined __cplusplus
222 # if 201103L <= __cplusplus
223 # define YY_NULLPTR nullptr
224 # else
225 # define YY_NULLPTR 0
226 # endif
227 # else
228 # define YY_NULLPTR ((void*)0)
229 # endif
230 # endif
231
232 #include "y.tab.hpp"
233
234 /* Symbol kind. */
235 enum yysymbol_kind_t
236 {
237 YYSYMBOL_YYEMPTY = -2,
238 YYSYMBOL_YYEOF = 0, /* "end of file" */
239 YYSYMBOL_YYerror = 1, /* error */
240 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
241 YYSYMBOL_SCRIPT = 3, /* SCRIPT */
242 YYSYMBOL_ZCLASS = 4, /* ZCLASS */
243 YYSYMBOL_FOR = 5, /* FOR */
244 YYSYMBOL_LOOP = 6, /* LOOP */
245 YYSYMBOL_IF = 7, /* IF */
246 YYSYMBOL_ELSE = 8, /* ELSE */
247 YYSYMBOL_SWITCH = 9, /* SWITCH */
248 YYSYMBOL_CASE = 10, /* CASE */
249 YYSYMBOL_DEFAULT = 11, /* DEFAULT */
250 YYSYMBOL_RETURN = 12, /* RETURN */
251 YYSYMBOL_IMPORT = 13, /* IMPORT */
252 YYSYMBOL_ZTRUE = 14, /* ZTRUE */
253 YYSYMBOL_ZFALSE = 15, /* ZFALSE */
254 YYSYMBOL_WHILE = 16, /* WHILE */
255 YYSYMBOL_BREAK = 17, /* BREAK */
256 YYSYMBOL_CONTINUE = 18, /* CONTINUE */
257 YYSYMBOL_ZCONST = 19, /* ZCONST */
258 YYSYMBOL_DO = 20, /* DO */
259 YYSYMBOL_TYPEDEF = 21, /* TYPEDEF */
260 YYSYMBOL_EXPECTERROR = 22, /* EXPECTERROR */
261 YYSYMBOL_OPTIONVALUE = 23, /* OPTIONVALUE */
262 YYSYMBOL_ISINCLUDED = 24, /* ISINCLUDED */
263 YYSYMBOL_DEFINE = 25, /* DEFINE */
264 YYSYMBOL_ENUM = 26, /* ENUM */
265 YYSYMBOL_NAMESPACE = 27, /* NAMESPACE */
266 YYSYMBOL_USING = 28, /* USING */
267 YYSYMBOL_ALWAYS = 29, /* ALWAYS */
268 YYSYMBOL_ZASM = 30, /* ZASM */
269 YYSYMBOL_INCLUDE = 31, /* INCLUDE */
270 YYSYMBOL_INCLUDEPATH = 32, /* INCLUDEPATH */
271 YYSYMBOL_INCLUDEIF = 33, /* INCLUDEIF */
272 YYSYMBOL_UNTIL = 34, /* UNTIL */
273 YYSYMBOL_UNLESS = 35, /* UNLESS */
274 YYSYMBOL_REPEAT = 36, /* REPEAT */
275 YYSYMBOL_INLINE = 37, /* INLINE */
276 YYSYMBOL_INTERNAL = 38, /* INTERNAL */
277 YYSYMBOL_STATIC = 39, /* STATIC */
278 YYSYMBOL_CONSTEXPR = 40, /* CONSTEXPR */
279 YYSYMBOL_NEW = 41, /* NEW */
280 YYSYMBOL_DELETE = 42, /* DELETE */
281 YYSYMBOL_CASSERT = 43, /* CASSERT */
282 YYSYMBOL_ZAUTO = 44, /* ZAUTO */
283 YYSYMBOL_ZVOID = 45, /* ZVOID */
284 YYSYMBOL_UNTYPED = 46, /* UNTYPED */
285 YYSYMBOL_ZBOOL = 47, /* ZBOOL */
286 YYSYMBOL_ZFLOAT = 48, /* ZFLOAT */
287 YYSYMBOL_ZCHAR = 49, /* ZCHAR */
288 YYSYMBOL_ZLONG = 50, /* ZLONG */
289 YYSYMBOL_ZRGB = 51, /* ZRGB */
290 YYSYMBOL_COMMA = 52, /* COMMA */
291 YYSYMBOL_DOT = 53, /* DOT */
292 YYSYMBOL_SEMICOLON = 54, /* SEMICOLON */
293 YYSYMBOL_SCOPERES = 55, /* SCOPERES */
294 YYSYMBOL_COLON = 56, /* COLON */
295 YYSYMBOL_IN = 57, /* IN */
296 YYSYMBOL_LPAREN = 58, /* LPAREN */
297 YYSYMBOL_RPAREN = 59, /* RPAREN */
298 YYSYMBOL_EMPTYBRACKETS = 60, /* EMPTYBRACKETS */
299 YYSYMBOL_LBRACKET = 61, /* LBRACKET */
300 YYSYMBOL_RBRACKET = 62, /* RBRACKET */
301 YYSYMBOL_LBRACE = 63, /* LBRACE */
302 YYSYMBOL_RBRACE = 64, /* RBRACE */
303 YYSYMBOL_QMARK = 65, /* QMARK */
304 YYSYMBOL_ARROW = 66, /* ARROW */
305 YYSYMBOL_INCREMENT = 67, /* INCREMENT */
306 YYSYMBOL_DECREMENT = 68, /* DECREMENT */
307 YYSYMBOL_NOT = 69, /* NOT */
308 YYSYMBOL_BITNOT = 70, /* BITNOT */
309 55500 YYSYMBOL_EXPN = 71, /* EXPN */
310 YYSYMBOL_TIMES = 72, /* TIMES */
311 YYSYMBOL_DIVIDE = 73, /* DIVIDE */
312 YYSYMBOL_MODULO = 74, /* MODULO */
313 YYSYMBOL_PLUS = 75, /* PLUS */
314 YYSYMBOL_MINUS = 76, /* MINUS */
315 YYSYMBOL_LSHIFT = 77, /* LSHIFT */
316 1711983 YYSYMBOL_RSHIFT = 78, /* RSHIFT */
317 1711983 YYSYMBOL_LE = 79, /* LE */
318 YYSYMBOL_LT = 80, /* LT */
319 4073 YYSYMBOL_GE = 81, /* GE */
320 4073 YYSYMBOL_GT = 82, /* GT */
321
1/2
✓ Branch 0 taken 4073 times.
✗ Branch 1 not taken.
4073 YYSYMBOL_EQ = 83, /* EQ */
322 YYSYMBOL_NE = 84, /* NE */
323
3/8
✓ Branch 0 taken 55556 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 55556 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 55556 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
55556 YYSYMBOL_BITAND = 85, /* BITAND */
324 YYSYMBOL_BITXOR = 86, /* BITXOR */
325 YYSYMBOL_BITOR = 87, /* BITOR */
326 YYSYMBOL_AND = 88, /* AND */
327 65907 YYSYMBOL_OR = 89, /* OR */
328 1842 YYSYMBOL_XOR = 90, /* XOR */
329 3328 YYSYMBOL_ASSIGN = 91, /* ASSIGN */
330 9788 YYSYMBOL_PLUSASSIGN = 92, /* PLUSASSIGN */
331 2520 YYSYMBOL_MINUSASSIGN = 93, /* MINUSASSIGN */
332 652756 YYSYMBOL_TIMESASSIGN = 94, /* TIMESASSIGN */
333 777776 YYSYMBOL_DIVIDEASSIGN = 95, /* DIVIDEASSIGN */
334 3384 YYSYMBOL_MODULOASSIGN = 96, /* MODULOASSIGN */
335 14 YYSYMBOL_LSHIFTASSIGN = 97, /* LSHIFTASSIGN */
336 35314 YYSYMBOL_RSHIFTASSIGN = 98, /* RSHIFTASSIGN */
337 159348 YYSYMBOL_BITANDASSIGN = 99, /* BITANDASSIGN */
338 YYSYMBOL_BITXORASSIGN = 100, /* BITXORASSIGN */
339 YYSYMBOL_BITORASSIGN = 101, /* BITORASSIGN */
340 6 YYSYMBOL_ANDASSIGN = 102, /* ANDASSIGN */
341 YYSYMBOL_ORASSIGN = 103, /* ORASSIGN */
342 YYSYMBOL_CAST = 104, /* CAST */
343 YYSYMBOL_RANGE = 105, /* RANGE */
344 YYSYMBOL_RANGE_L = 106, /* RANGE_L */
345 YYSYMBOL_RANGE_R = 107, /* RANGE_R */
346 YYSYMBOL_RANGE_LR = 108, /* RANGE_LR */
347 YYSYMBOL_RANGE_N = 109, /* RANGE_N */
348 YYSYMBOL_APPXEQUAL = 110, /* APPXEQUAL */
349 51979 YYSYMBOL_DOUBLEBANG = 111, /* DOUBLEBANG */
350 115134 YYSYMBOL_PERCENT = 112, /* PERCENT */
351 YYSYMBOL_BITNOTASSIGN = 113, /* BITNOTASSIGN */
352 YYSYMBOL_INVMOD = 114, /* INVMOD */
353 YYSYMBOL_DOUBLEADDR = 115, /* DOUBLEADDR */
354 YYSYMBOL_DOUBLESTAR = 116, /* DOUBLESTAR */
355 YYSYMBOL_HANDLE = 117, /* HANDLE */
356 YYSYMBOL_HANDLETOHANDLE = 118, /* HANDLETOHANDLE */
357 YYSYMBOL_ADDR = 119, /* ADDR */
358 YYSYMBOL_HASH = 120, /* HASH */
359 YYSYMBOL_ENDLINE = 121, /* ENDLINE */
360 YYSYMBOL_OPTION = 122, /* OPTION */
361 YYSYMBOL_INHERIT = 123, /* INHERIT */
362 YYSYMBOL_IDENTIFIER = 124, /* IDENTIFIER */
363 YYSYMBOL_QUOTEDSTRING = 125, /* QUOTEDSTRING */
364 YYSYMBOL_CASESTRING = 126, /* CASESTRING */
365 YYSYMBOL_IMPORTSTRING = 127, /* IMPORTSTRING */
366 YYSYMBOL_SINGLECHAR = 128, /* SINGLECHAR */
367 YYSYMBOL_NUMBER = 129, /* NUMBER */
368 YYSYMBOL_LONGNUMBER = 130, /* LONGNUMBER */
369 YYSYMBOL_YYACCEPT = 131, /* $accept */
370 YYSYMBOL_Init = 132, /* Init */
371 YYSYMBOL_Global_List = 133, /* Global_List */
372 YYSYMBOL_Global_Statement = 134, /* Global_Statement */
373 YYSYMBOL_Trail_Comma_RBrace = 135, /* Trail_Comma_RBrace */
374 YYSYMBOL_Namespace = 136, /* Namespace */
375 YYSYMBOL_Namespace_Block_List = 137, /* Namespace_Block_List */
376 YYSYMBOL_Namespace_Statement = 138, /* Namespace_Statement */
377 4141 YYSYMBOL_Using = 139, /* Using */
378 4141 YYSYMBOL_AlwaysUsing = 140, /* AlwaysUsing */
379 4141 YYSYMBOL_Import = 141, /* Import */
380
2/2
✓ Branch 0 taken 4140 times.
✓ Branch 1 taken 1 times.
4141 YYSYMBOL_IncludePath = 142, /* IncludePath */
381 YYSYMBOL_Option = 143, /* Option */
382 4140 YYSYMBOL_Statement_Assert = 144, /* Statement_Assert */
383 4140 YYSYMBOL_DataTypeDef = 145, /* DataTypeDef */
384 4140 YYSYMBOL_StandardDataTypedef = 146, /* StandardDataTypedef */
385
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4140 times.
4140 YYSYMBOL_DataType = 147, /* DataType */
386 4140 YYSYMBOL_DataType_Mods = 148, /* DataType_Mods */
387 4140 YYSYMBOL_DataType_Base = 149, /* DataType_Base */
388
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 YYSYMBOL_ScriptTypeDef = 150, /* ScriptTypeDef */
389 YYSYMBOL_Data = 151, /* Data */
390
3/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1 YYSYMBOL_Data_List = 152, /* Data_List */
391 YYSYMBOL_Data_Element = 153, /* Data_Element */
392 YYSYMBOL_Data_Element_Array_List = 154, /* Data_Element_Array_List */
393 YYSYMBOL_Single_Data_req_assign = 155, /* Single_Data_req_assign */
394 YYSYMBOL_Data_Element_Array_Element = 156, /* Data_Element_Array_Element */
395 YYSYMBOL_Data_Element_Array_Element_Size_List = 157, /* Data_Element_Array_Element_Size_List */
396 YYSYMBOL_Function = 158, /* Function */
397 YYSYMBOL_Function_Typeless = 159, /* Function_Typeless */
398 YYSYMBOL_Function_Heading = 160, /* Function_Heading */
399 YYSYMBOL_FunctionTemplateList = 161, /* FunctionTemplateList */
400 YYSYMBOL_Function_Parameters_List = 162, /* Function_Parameters_List */
401 YYSYMBOL_Function_Parameters_Element = 163, /* Function_Parameters_Element */
402 YYSYMBOL_Function_OptParams_List = 164, /* Function_OptParams_List */
403 YYSYMBOL_Function_VarArg_Element = 165, /* Function_VarArg_Element */
404 YYSYMBOL_Class_Ident = 166, /* Class_Ident */
405 YYSYMBOL_Class = 167, /* Class */
406 YYSYMBOL_Class_Block = 168, /* Class_Block */
407 YYSYMBOL_Class_Block_List = 169, /* Class_Block_List */
408 YYSYMBOL_Class_Constructor = 170, /* Class_Constructor */
409 YYSYMBOL_Class_Destructor = 171, /* Class_Destructor */
410 YYSYMBOL_Class_Data = 172, /* Class_Data */
411 YYSYMBOL_Class_Block_Element = 173, /* Class_Block_Element */
412 YYSYMBOL_Annotated_Script = 174, /* Annotated_Script */
413 YYSYMBOL_Script = 175, /* Script */
414 YYSYMBOL_Script_Type = 176, /* Script_Type */
415 YYSYMBOL_Script_Block = 177, /* Script_Block */
416 YYSYMBOL_Script_Block_List = 178, /* Script_Block_List */
417 YYSYMBOL_Script_Block_Element = 179, /* Script_Block_Element */
418 YYSYMBOL_Annotation_List = 180, /* Annotation_List */
419 YYSYMBOL_Annotation = 181, /* Annotation */
420 YYSYMBOL_Block_Statement = 182, /* Block_Statement */
421 YYSYMBOL_Statement = 183, /* Statement */
422 4141 YYSYMBOL_Statement_NoSemicolon = 184, /* Statement_NoSemicolon */
423
2/4
✓ Branch 0 taken 4141 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4141 times.
✗ Branch 3 not taken.
4141 YYSYMBOL_Statement_Block = 185, /* Statement_Block */
424 YYSYMBOL_Statement_Block_List = 186, /* Statement_Block_List */
425 YYSYMBOL_Statement_If = 187, /* Statement_If */
426 YYSYMBOL_If_Body = 188, /* If_Body */
427 YYSYMBOL_Statement_Switch = 189, /* Statement_Switch */
428 YYSYMBOL_Statement_Switch_Body = 190, /* Statement_Switch_Body */
429 YYSYMBOL_Statement_Switch_Cases = 191, /* Statement_Switch_Cases */
430 29456 YYSYMBOL_Statement_For = 192, /* Statement_For */
431 29456 YYSYMBOL_Statement_CommaList = 193, /* Statement_CommaList */
432 29456 YYSYMBOL_Statement_For_Standard = 194, /* Statement_For_Standard */
433 29456 YYSYMBOL_Statement_For_Each = 195, /* Statement_For_Each */
434 29456 YYSYMBOL_Annotated_Loop = 196, /* Annotated_Loop */
435 YYSYMBOL_Statement_Loop = 197, /* Statement_Loop */
436 1 YYSYMBOL_Statement_Loop_Inf = 198, /* Statement_Loop_Inf */
437 1 YYSYMBOL_Statement_Loop_Range = 199, /* Statement_Loop_Range */
438 1 YYSYMBOL_Statement_Loop_Range_Base = 200, /* Statement_Loop_Range_Base */
439 1 YYSYMBOL_Token_In = 201, /* Token_In */
440 1 YYSYMBOL_Statement_While = 202, /* Statement_While */
441
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
2 YYSYMBOL_Statement_Do = 203, /* Statement_Do */
442
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 YYSYMBOL_Statement_Repeat = 204, /* Statement_Repeat */
443
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 YYSYMBOL_Statement_Return = 205, /* Statement_Return */
444
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 YYSYMBOL_Statement_CompileError = 206, /* Statement_CompileError */
445 YYSYMBOL_Annotated_Enum = 207, /* Annotated_Enum */
446 YYSYMBOL_DataEnum = 208, /* DataEnum */
447
2/6
✓ Branch 0 taken 4138 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4138 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4138 YYSYMBOL_Enum_Block = 209, /* Enum_Block */
448 YYSYMBOL_ScopeRes = 210, /* ScopeRes */
449 YYSYMBOL_Identifier_List = 211, /* Identifier_List */
450 YYSYMBOL_Scoperes_Identifier_List = 212, /* Scoperes_Identifier_List */
451 YYSYMBOL_Mixed_Identifier_List = 213, /* Mixed_Identifier_List */
452
2/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3 YYSYMBOL_idlist_scopres = 214, /* idlist_scopres */
453 YYSYMBOL_idlist_dot = 215, /* idlist_dot */
454 YYSYMBOL_Ambigious_Iden_List = 216, /* Ambigious_Iden_List */
455 YYSYMBOL_Identifier = 217, /* Identifier */
456 YYSYMBOL_Func_Left = 218, /* Func_Left */
457 YYSYMBOL_Function_Call = 219, /* Function_Call */
458 YYSYMBOL_Function_Call_Parameters = 220, /* Function_Call_Parameters */
459 813 YYSYMBOL_Expr_1 = 221, /* Expr_1 */
460 39 YYSYMBOL_Expr_2 = 222, /* Expr_2 */
461 YYSYMBOL_Expr_Arrow = 223, /* Expr_Arrow */
462 370 YYSYMBOL_Expr_3 = 224, /* Expr_3 */
463 32274 YYSYMBOL_Expr_4 = 225, /* Expr_4 */
464 28 YYSYMBOL_Expr_5 = 226, /* Expr_5 */
465 27 YYSYMBOL_Expr_6 = 227, /* Expr_6 */
466 6 YYSYMBOL_Expr_7 = 228, /* Expr_7 */
467 31 YYSYMBOL_Expr_8 = 229, /* Expr_8 */
468 1 YYSYMBOL_Expr_9 = 230, /* Expr_9 */
469 5 YYSYMBOL_Expr_10 = 231, /* Expr_10 */
470 YYSYMBOL_Expr_11 = 232, /* Expr_11 */
471 YYSYMBOL_Expr_12 = 233, /* Expr_12 */
472 YYSYMBOL_Expr_13 = 234, /* Expr_13 */
473 YYSYMBOL_Expr_14 = 235, /* Expr_14 */
474 YYSYMBOL_Expr_15 = 236, /* Expr_15 */
475 YYSYMBOL_Expr_16 = 237, /* Expr_16 */
476 YYSYMBOL_Expr_17 = 238, /* Expr_17 */
477 YYSYMBOL_Expr_18 = 239, /* Expr_18 */
478 YYSYMBOL_Expression = 240, /* Expression */
479 YYSYMBOL_Statement_Expression = 241, /* Statement_Expression */
480 YYSYMBOL_Expression_Constant = 242, /* Expression_Constant */
481 8 YYSYMBOL_Expression_Const_Range = 243, /* Expression_Const_Range */
482
2/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
8 YYSYMBOL_Expression_Range = 244, /* Expression_Range */
483 YYSYMBOL_Literal = 245, /* Literal */
484 YYSYMBOL_QuotedString = 246, /* QuotedString */
485 YYSYMBOL_Literal_String = 247, /* Literal_String */
486 YYSYMBOL_Literal_Bool = 248, /* Literal_Bool */
487 YYSYMBOL_Literal_Array = 249, /* Literal_Array */
488 YYSYMBOL_Literal_Array_Body = 250 /* Literal_Array_Body */
489 };
490 typedef enum yysymbol_kind_t yysymbol_kind_t;
491
492
493 /* Default (constant) value used for initialization for null
494 right-hand sides. Unlike the standard yacc.c template, here we set
495 the default value of $$ to a zeroed-out value. Since the default
496 39813 value is undefined, this behavior is technically correct. */
497
2/6
✓ Branch 0 taken 39813 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 39813 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
39813 static YYSTYPE yyval_default;
498 static YYLTYPE yyloc_default
499 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
500 26094 = { 1, 1, 1, 1 }
501
2/6
✓ Branch 0 taken 26094 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 26094 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
26094 # endif
502 ;
503
504
505
506 #include <stddef.h>
507 #include <stdint.h>
508 #include <stdio.h>
509 #include <stdlib.h>
510 #include <string.h>
511
512 #ifdef short
513 1842 # undef short
514
3/8
✓ Branch 0 taken 1842 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1842 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1842 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1842 #endif
515
516 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
517 <limits.h> and (if available) <stdint.h> are included
518 so that the code can choose integer types of a good width. */
519
520 #ifndef __PTRDIFF_MAX__
521 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
522 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
523 8958 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
524 8958 # define YY_STDINT_H
525
3/8
✓ Branch 0 taken 8958 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8958 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8958 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
8958 # endif
526 #endif
527
528 /* Narrow types that promote to a signed type and that can represent a
529 signed or unsigned integer of at least N bits. In tables they can
530 save space and decrease cache pressure. Promoting to a signed type
531 helps avoid bugs in integer arithmetic. */
532
533 #ifdef __INT_LEAST8_MAX__
534 2 typedef __INT_LEAST8_TYPE__ yytype_int8;
535
2/6
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4 #elif defined YY_STDINT_H
536
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
2 typedef int_least8_t yytype_int8;
537 #else
538 typedef signed char yytype_int8;
539 #endif
540
541 #ifdef __INT_LEAST16_MAX__
542 typedef __INT_LEAST16_TYPE__ yytype_int16;
543 #elif defined YY_STDINT_H
544 typedef int_least16_t yytype_int16;
545 #else
546 typedef short yytype_int16;
547 #endif
548
549 /* Work around bug in HP-UX 11.23, which defines these macros
550 incorrectly for preprocessor constants. This workaround can likely
551 be removed in 2023, as HPE has promised support for HP-UX 11.23
552 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
553 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
554
3/8
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
4 #ifdef __hpux
555 # undef UINT_LEAST8_MAX
556 # undef UINT_LEAST16_MAX
557
3/8
✓ Branch 0 taken 9 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
18 # define UINT_LEAST8_MAX 255
558 # define UINT_LEAST16_MAX 65535
559 #endif
560
561 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
562 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
563 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
564 9827 && UINT_LEAST8_MAX <= INT_MAX)
565 typedef uint_least8_t yytype_uint8;
566 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
567 typedef unsigned char yytype_uint8;
568 9827 #else
569 9827 typedef short yytype_uint8;
570
4/10
✓ Branch 0 taken 9827 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9827 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 9827 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 9827 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
9827 #endif
571
572 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
573 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
574 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
575 && UINT_LEAST16_MAX <= INT_MAX)
576 265256 typedef uint_least16_t yytype_uint16;
577 265256 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
578 265256 typedef unsigned short yytype_uint16;
579 #else
580 6587393 typedef int yytype_uint16;
581 #endif
582 #ifndef YYPTRDIFF_T
583 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
584 # define YYPTRDIFF_T __PTRDIFF_TYPE__
585 506592 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
586 506592 # elif defined PTRDIFF_MAX
587 506592 # ifndef ptrdiff_t
588 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
589 6080801 # endif
590 # define YYPTRDIFF_T ptrdiff_t
591 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
592 # else
593 # define YYPTRDIFF_T long
594
2/6
✓ Branch 0 taken 52 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 52 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
52 # define YYPTRDIFF_MAXIMUM LONG_MAX
595
2/6
✓ Branch 0 taken 460641 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 460641 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
460641 # endif
596
2/6
✓ Branch 0 taken 95891 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 95891 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
95891 #endif
597
2/6
✓ Branch 0 taken 643953 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 643953 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
643953
598
2/6
✓ Branch 0 taken 3848433 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3848433 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3848433 #ifndef YYSIZE_T
599
2/6
✓ Branch 0 taken 484197 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 484197 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
484197 # ifdef __SIZE_TYPE__
600
2/6
✓ Branch 0 taken 36090 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 36090 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
36090 # define YYSIZE_T __SIZE_TYPE__
601
2/6
✓ Branch 0 taken 10086 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10086 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
10086 # elif defined size_t
602 # define YYSIZE_T size_t
603 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
604 1008050 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
605 1008050 # define YYSIZE_T size_t
606
1/4
✓ Branch 0 taken 1008050 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
2016100 # else
607 # define YYSIZE_T unsigned
608 # endif
609 #endif
610
611 #define YYSIZE_MAXIMUM \
612 YY_CAST (YYPTRDIFF_T, \
613 2520 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
614 2520 ? YYPTRDIFF_MAXIMUM \
615
3/8
✓ Branch 0 taken 2520 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2520 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2520 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
2520 : YY_CAST (YYSIZE_T, -1)))
616
617 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
618
619
620 #ifndef YY_
621 # if defined YYENABLE_NLS && YYENABLE_NLS
622 # if ENABLE_NLS
623 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
624 1014692 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
625
1/2
✓ Branch 0 taken 1014692 times.
✗ Branch 1 not taken.
1014692 # endif
626 # endif
627 1014692 # ifndef YY_
628 1014692 # define YY_(Msgid) Msgid
629 # endif
630 2286698 #endif
631 2286698
632 2286698
633
2/2
✓ Branch 0 taken 2221534 times.
✓ Branch 1 taken 65164 times.
2286698 #ifndef YYFREE
634 65164 # define YYFREE free
635 2286698 #endif
636 2286698 #ifndef YYMALLOC
637 # define YYMALLOC malloc
638 #endif
639 #ifndef YYREALLOC
640 # define YYREALLOC realloc
641 2507 #endif
642 2507
643 2507 #ifdef __cplusplus
644 2507 typedef bool yybool;
645 2507 # define yytrue true
646 # define yyfalse false
647 2286698 #else
648
2/6
✓ Branch 0 taken 2286698 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2286698 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2286698 /* When we move to stdbool, get rid of the various casts to yybool. */
649 typedef signed char yybool;
650
2/2
✓ Branch 0 taken 1236713 times.
✓ Branch 1 taken 1049985 times.
2286698 # define yytrue 1
651 1049985 # define yyfalse 0
652 #endif
653
654 #ifndef YYSETJMP
655 # include <setjmp.h>
656 # define YYJMP_BUF jmp_buf
657 2851788 # define YYSETJMP(Env) setjmp (Env)
658 2851788 /* Pacify Clang and ICC. */
659 2851788 # define YYLONGJMP(Env, Val) \
660 2851788 do { \
661 2851788 longjmp (Env, Val); \
662 2521799 YY_ASSERT (0); \
663 } while (yyfalse)
664 #endif
665
666 #ifndef YY_ATTRIBUTE_PURE
667 287284 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
668 287284 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
669 287284 # else
670 287284 # define YY_ATTRIBUTE_PURE
671 287284 # endif
672 #endif
673 5373587
674
2/6
✓ Branch 0 taken 5373587 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5373587 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5373587 #ifndef YY_ATTRIBUTE_UNUSED
675 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
676
2/4
✓ Branch 0 taken 5373587 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5373587 times.
✗ Branch 3 not taken.
5373587 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
677 # else
678 # define YY_ATTRIBUTE_UNUSED
679
2/2
✓ Branch 0 taken 4756471 times.
✓ Branch 1 taken 617116 times.
5373587 # endif
680 #endif
681
682 /* The _Noreturn keyword of C11. */
683 #ifndef _Noreturn
684 # if (defined __cplusplus \
685 && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
686 15 || (defined _MSC_VER && 1900 <= _MSC_VER)))
687 15 # define _Noreturn [[noreturn]]
688
2/6
✓ Branch 0 taken 15 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 15 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
15 # elif ((!defined __cplusplus || defined __clang__) \
689 && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
690 || (!defined __STRICT_ANSI__ \
691 && (4 < __GNUC__ + (7 <= __GNUC_MINOR__) \
692 || (defined __apple_build_version__ \
693 ? 6000000 <= __apple_build_version__ \
694 : 3 < __clang_major__ + (5 <= __clang_minor__))))))
695 /* _Noreturn works as-is. */
696 # elif (2 < __GNUC__ + (8 <= __GNUC_MINOR__) || defined __clang__ \
697 || 0x5110 <= __SUNPRO_C)
698 # define _Noreturn __attribute__ ((__noreturn__))
699 28422 # elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0)
700 28422 # define _Noreturn __declspec (noreturn)
701 28422 # else
702
2/6
✓ Branch 0 taken 258862 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 258862 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
258862 # define _Noreturn
703 # endif
704 #endif
705
706 /* Suppress unused-variable warnings by "using" E. */
707 #if ! defined lint || defined __GNUC__
708 # define YY_USE(E) ((void) (E))
709 #else
710 # define YY_USE(E) /* empty */
711 #endif
712
713 28422 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
714
2/6
✓ Branch 0 taken 28422 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 28422 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
28422 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
715 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
716 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
717 _Pragma ("GCC diagnostic push") \
718 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
719 # else
720 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
721 _Pragma ("GCC diagnostic push") \
722 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
723 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
724 # endif
725 15120 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
726
1/2
✓ Branch 0 taken 15120 times.
✗ Branch 1 not taken.
15120 _Pragma ("GCC diagnostic pop")
727 #else
728 # define YY_INITIAL_VALUE(Value) Value
729 #endif
730 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
731 15120 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
732 15120 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
733 #endif
734 #ifndef YY_INITIAL_VALUE
735 # define YY_INITIAL_VALUE(Value) /* Nothing. */
736 #endif
737
738 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
739 # define YY_IGNORE_USELESS_CAST_BEGIN \
740 _Pragma ("GCC diagnostic push") \
741 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
742 # define YY_IGNORE_USELESS_CAST_END \
743 _Pragma ("GCC diagnostic pop")
744 #endif
745 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
746 # define YY_IGNORE_USELESS_CAST_BEGIN
747 # define YY_IGNORE_USELESS_CAST_END
748 #endif
749
750
751 #define YY_ASSERT(E) ((void) (0 && (E)))
752
753 /* YYFINAL -- State number of the termination state. */
754 #define YYFINAL 3
755 /* YYLAST -- Last index in YYTABLE. */
756 #define YYLAST 2934
757
758 /* YYNTOKENS -- Number of terminals. */
759 #define YYNTOKENS 131
760 /* YYNNTS -- Number of nonterminals. */
761 #define YYNNTS 120
762 /* YYNRULES -- Number of rules. */
763 578760 #define YYNRULES 382
764
1/2
✓ Branch 0 taken 578760 times.
✗ Branch 1 not taken.
578760 /* YYNSTATES -- Number of states. */
765 #define YYNSTATES 743
766 /* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */
767 #define YYMAXRHS 11
768 /* YYMAXLEFT -- Maximum number of symbols to the left of a handle
769
1/2
✓ Branch 0 taken 578760 times.
✗ Branch 1 not taken.
578760 accessed by $0, $-1, etc., in any rule. */
770 #define YYMAXLEFT 0
771
772 /* YYMAXUTOK -- Last valid token kind. */
773 #define YYMAXUTOK 385
774 578760
775 578760 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
776 578760 as returned by yylex, with out-of-bounds checking. */
777 #define YYTRANSLATE(YYX) \
778 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
779 1303302 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
780 1303302 : YYSYMBOL_YYUNDEF)
781
2/2
✓ Branch 0 taken 1230382 times.
✓ Branch 1 taken 72920 times.
1303302
782 72920 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
783 1303302 as returned by yylex. */
784 1303302 static const yytype_uint8 yytranslate[] =
785 {
786 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
787 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
788 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
789 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
790 724570 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
791 724570 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
792 724570 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
793 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
794 614880 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
795 614880 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
796
4/18
✓ Branch 0 taken 614880 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 614880 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 614880 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 614880 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
1229760 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
797 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
798 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
799 1 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
800 1 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
801 1 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
802 1 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
803 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
804 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
805 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
806 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
807 1311972 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
808 1311972 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
809 1311972 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
810 1311972 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
811 1311972 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
812 1311972 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
813 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
814 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
815 27530 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
816 27530 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
817 27530 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
818 27530 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
819 27530 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
820
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 27530 times.
27530 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
821 27530 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
822 27530 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
823 27530 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
824 125, 126, 127, 128, 129, 130
825 };
826
827 #if YYDEBUG
828
2/6
✓ Branch 0 taken 27530 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 27530 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
27530 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
829 static const yytype_int16 yyrline[] =
830 {
831 0, 309, 309, 315, 318, 323, 327, 328, 329, 330,
832 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
833 1624 341, 349, 350, 356, 376, 429, 435, 446, 451, 459,
834 1624 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
835 1624 470, 480, 486, 495, 499, 503, 512, 522, 528, 533,
836 1624 538, 541, 544, 553, 556, 564, 567, 575, 580, 584,
837 1624 589, 594, 595, 596, 597, 598, 599, 600, 601, 603,
838 612, 623, 629, 640, 646, 656, 662, 666, 672, 685,
839 698, 702, 706, 712, 723, 734, 750, 761, 778, 788,
840 793, 798, 805, 813, 827, 832, 840, 846, 851, 852,
841 1646697 853, 857, 867, 875, 885, 894, 897, 908, 909, 913,
842 1646697 919, 929, 934, 945, 950, 955, 960, 974, 984, 997,
843 1646697 1011, 1015, 1016, 1020, 1021, 1022, 1023, 1024, 1035, 1235,
844 1646697 1248, 1255, 1256, 1260, 1266, 1276, 1281, 1289, 1290, 1291,
845 1646697 1292, 1293, 1294, 1295, 1303, 1309, 1317, 1323, 1329, 1335,
846 1342, 1349, 1360, 1377, 1378, 1379, 1380, 1382, 1383, 1384,
847 1017757 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1398,
848
2/6
✓ Branch 0 taken 1017757 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1017757 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1017757 1399, 1404, 1405, 1406, 1411, 1412, 1413, 1415, 1416, 1417,
849 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1430, 1431,
850 1436, 1437, 1441, 1442, 1446, 1451, 1458, 1463, 1471, 1472,
851 125741 1480, 1484, 1489, 1493, 1501, 1508, 1515, 1525, 1530, 1534,
852 812 1539, 1546, 1551, 1556, 1563, 1570, 1571, 1575, 1580, 1588,
853
2/6
✓ Branch 0 taken 195192 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 195192 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
195192 1600, 1616, 1625, 1638, 1662, 1666, 1667, 1671, 1679, 1686,
854 1690, 1699, 1708, 1716, 1725, 1734, 1745, 1746, 1750, 1754,
855 1759, 1765, 1775, 1779, 1784, 1790, 1800, 1807, 1810, 1814,
856 1822, 1855, 1858, 1859, 1866, 1875, 1880, 1932, 1937, 1938,
857 1939, 1940, 1944, 1945, 1954, 1962, 1970, 1978, 1989, 1997,
858 2980251 2005, 2012, 2020, 2031, 2040, 2044, 2045, 2049, 2056, 2063,
859 2980251 2069, 2078, 2084, 2096, 2097, 2098, 2100, 2110, 2118, 2124,
860
2/6
✓ Branch 0 taken 2980251 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2980251 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2980251 2126, 2128, 2130, 2132, 2135, 2138, 2140, 2142, 2144, 2146,
861 2148, 2151, 2153, 2156, 2158, 2160, 2162, 2165, 2167, 2169,
862 2172, 2174, 2176, 2179, 2181, 2183, 2185, 2187, 2190, 2192,
863 2194, 2196, 2198, 2201, 2203, 2206, 2208, 2211, 2213, 2216,
864 2218, 2221, 2223, 2226, 2228, 2237, 2238, 2245, 2247, 2249,
865 2254, 2259, 2264, 2269, 2274, 2279, 2284, 2290, 2296, 2301,
866 2306, 2311, 2317, 2320, 2327, 2333, 2344, 2349, 2354, 2359,
867 2364, 2369, 2374, 2379, 2384, 2394, 2397, 2400, 2404, 2405,
868 189241 2406, 2407, 2411, 2418, 2424, 2428, 2437, 2438, 2443, 2455,
869 189241 2466, 2473, 2478
870 189241 };
871 189241 #endif
872 189241
873 189241 #define YYPACT_NINF (-608)
874 189241 #define YYTABLE_NINF (-354)
875
876 125741 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
877 125741 STATE-NUM. */
878
2/6
✓ Branch 0 taken 125741 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 125741 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
125741 static const yytype_int16 yypact[] =
879 {
880 -608, 96, 1783, -608, 95, 40, 58, 359, 700, 83,
881 55, -3, 145, 148, 744, 1113, 744, 744, 123, -608,
882 -608, -608, -608, -608, -608, -608, -608, -608, 66, 17,
883 213, -608, -608, 176, 228, -608, -608, -608, 233, 243,
884 -608, 12, -608, -608, 272, 289, -608, -608, -608, -608,
885 309, 7, -608, 298, -608, 149, -608, 157, 205, 240,
886
2/6
✓ Branch 0 taken 812 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 812 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
812 315, -608, 248, -608, 271, -608, -608, -608, -7, 2508,
887 149, 700, 332, 335, 346, 346, -3, 384, 744, 12,
888 -608, -608, -608, -608, -608, 2508, 355, 291, 303, 358,
889 29, -608, -608, -608, -608, -608, 382, -608, 23, -608,
890 182, 103, 179, -608, -608, 311, 319, -608, -608, -608,
891 -608, -608, 149, 149, 149, 149, 149, 149, 149, 149,
892 313, 2632, -608, -608, -608, -608, 381, 383, -3, 2508,
893 2508, 2508, 2538, 2538, 2538, 2538, 2538, 700, -608, -608,
894 35320 -608, -608, 385, 386, -608, -608, -608, 387, 253, -608,
895 369, 302, 168, 229, 266, 118, 357, 363, 361, 364,
896 80, -608, 783, -608, -608, 391, -608, 321, -608, -608,
897 -608, -608, 46, -608, 265, 149, 1887, -608, -3, 190,
898 35320 3, -608, -608, 2508, 891, 1954, 149, -608, 2508, 2508,
899 35320 -608, -608, 443, 1185, -608, 541, 149, 388, -608, -608,
900 35320 -608, -608, -608, -608, -608, -608, -608, -608, 397, 1239,
901 35320 -608, -3, 334, 403, -608, 406, 407, -608, -608, -608,
902 35320 2667, -608, -608, 411, -608, 47, 412, 103, 347, 343,
903
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 35320 times.
35320 414, -608, 417, -608, 49, -608, -608, -608, -608, -608,
904 35320 107, 2283, 2508, 356, -608, -608, 2538, 2538, 2538, 2538,
905 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538,
906 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2508, 2508,
907 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508,
908 35305 2508, 2508, 1832, -608, 30, -608, -608, 149, 46, 421,
909
2/6
✓ Branch 0 taken 15 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 15 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
15 -608, -608, 1936, -608, 428, -608, 444, 446, 447, 448,
910 -608, -608, -608, -608, 449, -608, 372, -608, -608, 250,
911 435, 445, 15, 453, 392, 394, 395, 396, 400, 401,
912 -608, 177, -608, -608, 2508, 450, 451, 454, 460, 2508,
913 466, 0, 9, 1563, 467, 468, 454, 470, 440, -608,
914 1490331 1185, -608, 475, -608, 476, 477, 10, 478, 54, -608,
915 1490331 -608, 1311, -608, -608, -608, -608, -608, -608, -608, -608,
916 1490331 -608, 525, -608, -608, -608, 481, 482, 483, 32, -608,
917 1490331 484, 700, 10, 480, 72, -608, -608, 43, -608, 1626,
918 1490331 -608, 2508, -608, -608, -608, -608, -608, -608, -608, -608,
919 -608, -608, -608, -608, 485, 489, 2303, -608, 2379, -608,
920 2508, 339, -608, 195, -608, 479, -608, -608, 369, 369,
921 369, 302, 302, 168, 168, 229, 229, 229, 229, 266,
922 266, 266, 266, 118, 357, 363, 361, 493, 364, -608,
923 -608, -608, -608, -608, -608, -608, -608, -608, -608, -608,
924 -608, -608, -608, 360, -608, -608, -608, 46, -608, 2508,
925 -608, -608, -608, -608, -608, -608, -608, -608, -608, 34,
926 494, 495, -608, -608, -608, 425, -608, -608, -608, -608,
927 -608, -608, 2508, -608, 501, 1689, 2044, 2108, -608, 2508,
928 -608, 2508, -608, 502, -608, 503, 81, -608, 2508, 2508,
929 -608, 2508, 505, -608, -608, -608, -608, -608, -608, -608,
930 861 -608, 1563, -608, -608, -608, -608, -608, -608, -608, 541,
931 861 2508, 149, 507, 509, -608, 514, -608, 515, 516, 518,
932 861 -608, 2722, -608, 519, 504, -608, -608, -608, 210, -608,
933 861 512, -608, -608, 2508, -608, -608, 2538, -608, 517, -608,
934 -608, -608, 520, -608, -608, 452, 455, -608, -608, 521,
935 6 -608, -608, -608, -608, -608, -608, -608, -608, -608, -608,
936 6 327, -608, 2508, 1563, 2508, 327, 31, 251, 211, 10,
937
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 6 times.
6 523, 535, 536, 546, -608, -608, 549, 550, 551, 554,
938 555, -608, -608, 526, -608, 541, 2508, -608, -608, -608,
939 -608, -608, -608, -608, -608, 2757, -608, 527, -608, -608,
940 1005, -608, -608, -608, 2508, -608, -608, 2508, 219, -608,
941 563, 2415, 327, 2508, 2508, 2508, 2508, 2508, 2508, 1563,
942 486, 1563, 1563, 561, 1563, 2508, 2508, 1689, 1563, 1563,
943 6 700, 559, 571, -608, 568, -608, 580, 576, 2508, 2508,
944 6 222, 2415, -608, -608, -608, -608, -608, 578, -608, 2508,
945 630, 631, 415, 634, 584, 588, -608, 641, -608, 560,
946
2/6
✓ Branch 0 taken 23 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 23 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
23 -608, -608, 2810, 2457, 1689, 1563, 273, 280, 2508, 1563,
947 258, 1563, -608, 1563, 1563, 2184, 594, 94, 1057, 1563,
948 644, 645, 1563, -608, -608, 49, -608, 270, 647, -608,
949 -608, -608, -608, 598, -608, 2508, 1563, -608, -608, -608,
950 602, 251, 605, 617, -608, -608, -608, 1057, 2207, 619,
951 1437, -608, 1563, 1563, -608, -608, 1689, 1563, 1563, 1563,
952 622, -608, -608, -608, -608, 1437, 626, 628, 632, -608,
953 -608, -608, -608, 670, -608, -608, 1563, -608, -608, -608,
954 1563, -608, -608
955 };
956
2/6
✓ Branch 0 taken 35282 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 35282 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
35282
957 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
958 Performed when YYTABLE does not specify something else to do. Zero
959 means the default is an error. */
960 static const yytype_int16 yydefact[] =
961 {
962 5, 0, 2, 1, 0, 0, 0, 0, 0, 0,
963 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,
964 62, 63, 64, 65, 66, 67, 68, 257, 0, 0,
965 274, 3, 8, 0, 0, 6, 7, 4, 0, 0,
966 55, 0, 58, 60, 0, 0, 12, 15, 14, 13,
967 0, 0, 145, 0, 251, 0, 69, 258, 259, 260,
968 261, 273, 0, 105, 0, 43, 274, 59, 0, 0,
969 0, 0, 0, 0, 262, 263, 0, 0, 0, 0,
970 86, 71, 87, 85, 84, 0, 0, 0, 0, 0,
971 0, 17, 18, 19, 9, 57, 72, 74, 76, 88,
972 0, 0, 78, 10, 11, 0, 0, 130, 128, 250,
973 16, 270, 0, 0, 0, 0, 0, 0, 0, 0,
974 0, 0, 106, 56, 376, 377, 0, 0, 0, 0,
975 36120 0, 0, 0, 0, 0, 0, 0, 0, 374, 367,
976
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 36120 times.
36120 365, 366, 283, 0, 292, 286, 289, 294, 295, 301,
977 303, 307, 310, 313, 318, 323, 325, 327, 329, 331,
978 333, 335, 337, 352, 354, 0, 284, 375, 368, 369,
979 370, 256, 0, 78, 0, 0, 0, 41, 0, 0,
980 0, 44, 46, 0, 0, 0, 0, 81, 0, 0,
981 36120 77, 90, 0, 0, 89, 100, 0, 0, 144, 264,
982 36120 266, 265, 268, 271, 267, 272, 269, 70, 0, 0,
983 36120 108, 0, 0, 0, 114, 0, 0, 120, 122, 118,
984 0, 115, 116, 0, 113, 0, 0, 69, 0, 0,
985 36143 0, 336, 0, 382, 0, 296, 297, 299, 300, 298,
986
2/6
✓ Branch 0 taken 36143 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 36143 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
36143 0, 0, 0, 0, 290, 291, 0, 0, 0, 0,
987 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
988 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
989
1/2
✓ Branch 0 taken 36143 times.
✗ Branch 1 not taken.
36143 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
990 0, 0, 0, 373, 0, 22, 252, 0, 0, 0,
991 23, 29, 0, 27, 0, 28, 0, 0, 0, 0,
992 33, 36, 35, 34, 0, 42, 0, 53, 151, 0,
993 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
994 73, 0, 83, 75, 0, 0, 0, 0, 0, 248,
995 0, 0, 0, 0, 0, 0, 0, 0, 0, 171,
996 0, 193, 0, 197, 0, 0, 0, 0, 0, 196,
997 158, 0, 159, 160, 161, 215, 216, 162, 224, 225,
998 6 226, 229, 163, 164, 165, 0, 0, 0, 283, 353,
999
2/6
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6 0, 0, 0, 0, 97, 98, 99, 0, 94, 0,
1000 129, 0, 117, 119, 125, 126, 123, 107, 110, 111,
1001 112, 109, 121, 124, 0, 0, 0, 285, 0, 380,
1002
1/2
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
6 0, 0, 279, 0, 282, 0, 288, 302, 304, 305,
1003 306, 308, 309, 311, 312, 315, 314, 317, 316, 319,
1004 320, 322, 321, 324, 326, 328, 330, 0, 332, 338,
1005 339, 340, 341, 342, 343, 344, 345, 346, 348, 349,
1006 350, 351, 347, 0, 20, 21, 255, 0, 254, 0,
1007 24, 25, 26, 38, 39, 30, 31, 32, 37, 0,
1008 0, 0, 147, 148, 146, 0, 52, 51, 50, 49,
1009 48, 47, 0, 80, 0, 190, 0, 0, 198, 0,
1010 247, 0, 167, 0, 169, 0, 0, 152, 0, 0,
1011 1001397 199, 0, 382, 156, 173, 154, 153, 223, 192, 195,
1012 194, 0, 166, 172, 155, 157, 104, 101, 92, 100,
1013 0, 0, 0, 0, 132, 0, 136, 0, 0, 0,
1014 138, 0, 135, 0, 0, 371, 372, 277, 0, 381,
1015 1001397 0, 283, 287, 0, 280, 293, 0, 253, 0, 54,
1016 149, 150, 0, 82, 91, 186, 188, 175, 174, 0,
1017 488957 178, 179, 180, 181, 182, 183, 184, 185, 191, 176,
1018 488957 273, 177, 0, 0, 0, 274, 0, 0, 0, 0,
1019 488957 0, 0, 0, 0, 168, 170, 0, 0, 0, 0,
1020 0, 228, 96, 103, 95, 100, 0, 141, 142, 139,
1021 137, 131, 134, 133, 140, 0, 278, 0, 281, 334,
1022 0, 45, 187, 189, 0, 236, 237, 0, 0, 227,
1023 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1024 0, 0, 0, 0, 0, 0, 0, 190, 0, 0,
1025 0, 0, 0, 127, 0, 40, 0, 0, 0, 0,
1026 0, 0, 356, 358, 359, 357, 360, 0, 235, 0,
1027 200, 202, 0, 238, 0, 0, 249, 240, 246, 0,
1028 102, 93, 0, 0, 190, 0, 0, 0, 0, 0,
1029 0, 0, 79, 0, 0, 0, 0, 0, 0, 0,
1030 242, 244, 0, 143, 379, 0, 218, 0, 221, 364,
1031 363, 362, 361, 0, 234, 0, 0, 232, 201, 203,
1032 0, 354, 0, 0, 355, 214, 204, 0, 0, 0,
1033 206, 239, 0, 0, 241, 378, 190, 0, 0, 0,
1034 0, 233, 213, 211, 212, 205, 0, 0, 0, 208,
1035 243, 245, 217, 219, 222, 231, 0, 210, 207, 209,
1036 41 0, 230, 220
1037 41 };
1038
1/2
✓ Branch 0 taken 41 times.
✗ Branch 1 not taken.
41
1039 /* YYPGOTO[NTERM-NUM]. */
1040 static const yytype_int16 yypgoto[] =
1041 {
1042 -608, -608, -608, 405, -232, 18, -608, -282, 45, -608,
1043 -608, -608, -1, 59, 6, -608, 135, -608, 682, 19,
1044 2, -608, -38, -608, -608, -608, -608, 41, -13, -608,
1045 -608, -463, -344, 60, -608, -608, 20, -608, -608, -49,
1046 473, -608, -209, 22, 14, 633, -608, -608, -492, 79,
1047 590, 191, -167, -586, -93, -607, -450, 365, -441, -608,
1048 35, -440, -608, -608, -608, -439, 350, -608, -608, -608,
1049 -501, -433, -431, -608, -424, -407, 21, -33, -143, 193,
1050 -2, -31, -608, 26, -608, 27, 656, -608, -608, 304,
1051 -608, 305, -608, -608, -47, 174, 178, 180, 110, 129,
1052 437, 441, 461, 462, 464, -608, -247, 599, 1124, 362,
1053 -400, -76, 5, -446, -608, -149, -608, -608, -608, 69
1054 };
1055
1056 /* YYDEFGOTO[NTERM-NUM]. */
1057 static const yytype_int16 yydefgoto[] =
1058 {
1059 0, 1, 2, 31, 286, 291, 292, 293, 342, 34,
1060 35, 36, 343, 344, 345, 40, 346, 42, 43, 298,
1061 347, 96, 171, 98, 570, 190, 321, 82, 219, 100,
1062 377, 373, 374, 375, 376, 64, 301, 122, 220, 221,
1063 222, 223, 224, 302, 303, 50, 380, 521, 522, 348,
1064 52, 486, 487, 549, 350, 351, 352, 478, 353, 677,
1065 678, 354, 687, 355, 356, 357, 358, 359, 360, 361,
1066 607, 362, 363, 364, 365, 366, 367, 54, 172, 55,
1067 142, 73, 57, 58, 59, 60, 61, 143, 144, 403,
1068 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1069 155, 156, 157, 158, 159, 160, 161, 162, 163, 369,
1070 370, 165, 703, 704, 166, 167, 168, 169, 170, 234
1071 };
1072
1073 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1074 positive, shift that token. If negative, reduce the rule whose
1075 number is the opposite. If YYTABLE_NINF, syntax error. */
1076 static const yytype_int16 yytable[] =
1077 {
1078 56, 37, 399, 97, 45, 56, 56, 194, 39, 179,
1079 451, 391, 56, 56, 56, 56, 49, 81, 109, 427,
1080 32, 44, 47, 53, 48, 551, 349, 506, 99, 593,
1081 568, 312, 288, 10, 552, 553, 554, 74, 75, 101,
1082 184, 656, 555, 46, 556, 177, 582, 33, 87, 88,
1083 89, 557, 27, 95, 482, 80, 448, 83, 84, 106,
1084 326, 38, 308, 484, 611, 108, 99, 27, 558, 56,
1085 95, 710, 95, 10, 464, 561, 56, 101, 686, 309,
1086 10, 51, 111, 187, 188, 235, 236, 237, 238, 239,
1087 -276, 95, -69, 539, 445, 511, 3, 576, 284, 106,
1088 725, 398, 74, 75, 675, 676, 106, 313, 316, 319,
1089 285, 641, 322, 285, 189, 577, 62, 123, 70, 227,
1090 214, 66, 631, 217, 509, 512, 230, 216, 138, 483,
1091 732, 107, 310, 311, 66, 56, 66, 41, 485, 90,
1092 283, 69, 226, 68, 447, 266, 71, 305, 320, 79,
1093 41, 79, 79, 185, 66, 612, -69, 459, 706, 283,
1094 382, 195, 218, 510, 63, 640, 213, 95, 400, 267,
1095 683, 389, 76, 349, 56, 295, 77, 551, 299, 72,
1096 215, 85, 297, 196, 500, 65, 552, 553, 554, 401,
1097 86, 368, 109, 56, 555, 670, 556, 304, 383, 407,
1098 225, 258, 259, 557, 74, 75, 174, 227, 260, 101,
1099 112, 81, 27, 79, 551, 537, -130, 300, 227, 388,
1100 558, 294, 217, 552, 553, 554, 216, 561, 261, 472,
1101 91, 555, -273, 556, -273, 296, 191, -273, 192, 473,
1102 557, 226, 306, 250, 251, 193, 446, 533, 474, 307,
1103 113, 115, 117, 119, 534, 51, 41, 558, 114, -273,
1104 27, 218, 533, 618, 561, 213, 551, 115, 119, 596,
1105 619, 638, 240, 66, 668, 552, 553, 554, 397, 215,
1106 56, 669, 92, 555, 45, 556, 659, 93, 39, 599,
1107 56, 452, 557, 116, 299, 27, 49, 94, 297, 225,
1108 32, 44, 47, 53, 48, 524, 252, 253, 97, 558,
1109 695, 41, 105, 304, 242, 109, 561, 696, 635, 243,
1110 244, 245, 716, 46, 530, 95, 103, 33, 287, 717,
1111 372, 368, 689, 300, 121, 690, 56, 294, 368, 691,
1112 81, 38, 692, 104, 41, 254, 255, 256, 257, 368,
1113 499, 296, 110, 124, 125, 41, 613, 614, 615, 616,
1114 617, 51, 126, 127, 415, 416, 417, 418, 118, 56,
1115 27, 51, 107, 538, 247, 248, 249, 56, 516, 460,
1116 461, 519, 550, 605, 606, 518, 633, 419, 420, 421,
1117 422, 87, 88, 89, 27, 175, 543, 130, 176, 531,
1118 523, 27, 131, 19, 20, 21, 22, 23, 24, 25,
1119 26, 178, 578, 180, 27, 580, 183, 41, 181, 137,
1120 520, 408, 409, 410, 515, 675, 676, 41, 411, 412,
1121 182, 164, 413, 414, 186, 197, 28, 207, 517, 228,
1122 246, 229, 262, -276, 241, -275, 283, 164, 264, 263,
1123 282, 379, 265, 715, 324, 381, 90, 384, 225, 7,
1124 385, 386, 658, 66, 138, 392, 393, 139, 140, 141,
1125 395, 394, 396, 368, 368, 368, 397, 548, 338, 449,
1126 406, 547, 453, 66, 19, 20, 21, 22, 23, 24,
1127 25, 26, 232, 233, 462, 27, 559, 138, 454, 368,
1128 455, 456, 457, 458, 463, 465, 372, 56, 475, 476,
1129 632, 349, 477, 466, 41, 467, 468, 469, 479, 56,
1130 592, 470, 471, 519, 481, 488, 489, 518, 491, 493,
1131 494, 495, 496, 501, 550, 502, 503, 504, 505, 508,
1132 349, 535, 523, 500, 525, 164, 164, 164, 526, 536,
1133 164, 323, 542, 540, 541, 544, 574, 575, 500, -353,
1134 7, 368, 520, 595, 66, 585, 515, 586, 587, 588,
1135 589, 550, 590, 594, 597, 604, 600, 649, 630, 601,
1136 517, 602, 621, 56, 603, 19, 20, 21, 22, 23,
1137 24, 25, 26, 56, 622, 623, 27, 217, 56, 702,
1138 225, 216, 299, 404, 405, 624, 297, 625, 626, 634,
1139 627, 566, 569, 628, 629, 639, 226, 368, 661, 368,
1140 368, 304, 368, 550, 652, 368, 368, 368, 56, 548,
1141 662, 663, 727, 547, 664, 665, 218, 671, 673, 674,
1142 213, 300, 679, 680, 372, 294, 371, 681, 559, 682,
1143 705, 510, 712, 713, 215, 718, 41, 719, 722, 296,
1144 56, 723, 368, 368, 519, 66, 548, 368, 518, 368,
1145 547, 368, 368, 724, 225, 729, 368, 368, 740, 51,
1146 368, 736, 737, 523, 738, 559, 164, 444, 739, 67,
1147 660, 480, 581, 390, 368, 120, 198, 102, 497, 423,
1148 528, 490, 492, 520, 424, 368, 532, 515, 368, 499,
1149 368, 368, 707, 728, 368, 368, 368, 368, 548, 7,
1150 372, 517, 547, 368, 499, 425, 173, 426, 231, 0,
1151 41, 428, 685, 0, 368, 41, 0, 559, 368, 0,
1152 0, 225, 0, 164, 19, 20, 21, 22, 23, 24,
1153 25, 26, 0, 0, 609, 27, 0, 0, 404, 0,
1154 529, 0, 164, 7, 0, 372, 0, 0, 199, 200,
1155 201, 202, 203, 204, 205, 206, 0, 0, 0, 0,
1156 0, 14, 78, 16, 17, 0, 0, 0, 19, 20,
1157 21, 22, 23, 24, 25, 26, 0, 41, 0, 27,
1158 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1159 648, 164, 650, 651, 0, 653, 0, 0, 0, 657,
1160 0, 0, 0, 0, 66, 0, 0, 0, 0, 0,
1161 0, 173, 0, 0, 164, 0, 0, 0, 567, 571,
1162 0, 572, 173, 573, 0, 0, 0, 0, 0, 0,
1163 164, 579, 378, 164, 0, 0, 688, 0, 0, 0,
1164 694, 0, 697, 0, 698, 699, 0, 0, 66, 0,
1165 711, 0, 583, 714, 268, 269, 270, 271, 272, 273,
1166 274, 275, 276, 277, 278, 279, 280, 721, 0, 0,
1167 0, 0, 0, 0, 0, 598, 281, 0, 0, 0,
1168 0, 0, 314, 730, 731, 124, 125, 0, 733, 734,
1169 735, 0, 0, 0, 126, 127, 0, 0, 0, 0,
1170 0, 0, 0, 0, 608, 0, 610, 741, 0, 0,
1171 0, 742, 128, 129, 0, 0, 0, 0, 0, 0,
1172 173, 0, 0, 173, 0, 0, 27, 0, 164, 130,
1173 0, 0, 0, 0, 131, 0, 0, 0, 132, 133,
1174 134, 135, 0, 0, 0, 0, 636, 136, 0, 637,
1175 0, 137, 0, 567, 0, 642, 643, 644, 645, 646,
1176 647, 0, 0, 0, 0, 0, 0, 654, 655, 0,
1177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1178 666, 667, 173, 567, 0, 0, 0, 0, 4, 5,
1179 0, 672, 0, 0, 315, 66, 138, 0, 0, 139,
1180 140, 141, 0, 0, 7, 233, 8, 289, 507, 0,
1181 693, 10, 11, 12, 0, 0, 0, 701, 0, 0,
1182 0, 0, 14, 15, 16, 17, 0, 0, 18, 19,
1183 20, 21, 22, 23, 24, 25, 26, 720, 0, 0,
1184 27, 0, 325, 326, 327, 0, 328, 708, 709, 329,
1185 701, 124, 125, 330, 331, 332, 7, 333, 8, 334,
1186 126, 127, 0, 10, 0, 12, 0, 0, 0, 0,
1187 0, 335, 336, 337, 0, 338, 0, 0, 128, 129,
1188 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
1189 0, 339, 27, 0, 0, 130, 0, 0, 0, 0,
1190 340, 0, 28, 0, 132, 133, 134, 135, 0, 30,
1191 0, 560, 7, 136, 0, 0, 0, 137, 0, 0,
1192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1193 14, 15, 16, 17, 0, 0, 0, 19, 20, 21,
1194 22, 23, 24, 25, 26, 0, 0, 584, 27, 0,
1195 0, 0, 0, 0, 28, 0, 0, 212, 0, 0,
1196 0, 66, 138, 0, 0, 139, 140, 141, 0, 0,
1197 325, 326, 327, 0, 328, 0, 0, 329, 0, 124,
1198 125, 330, 331, 332, 7, 333, 8, 334, 126, 127,
1199 0, 10, 0, 12, 0, 0, 0, 0, 0, 335,
1200 336, 337, 0, 338, 0, 620, 128, 129, 18, 19,
1201 20, 21, 22, 23, 24, 25, 26, 66, 0, 339,
1202 27, 0, 0, 130, 0, 0, 0, 0, 340, 341,
1203 0, 0, 132, 133, 134, 135, 0, 0, 7, 0,
1204 0, 136, 0, 0, 0, 137, 0, 0, 0, 0,
1205 0, 0, 0, 0, 0, 0, 14, 209, 16, 17,
1206 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
1207 26, 0, 0, 0, 27, 0, 0, 0, 0, 0,
1208 0, 0, 28, 0, 0, 212, 0, 0, 0, 66,
1209 138, 0, 0, 139, 140, 141, 325, 326, 327, 0,
1210 328, 0, 0, 329, 0, 124, 125, 330, 331, 332,
1211 7, 333, 8, 334, 126, 127, 0, 10, 0, 12,
1212 0, 0, 0, 0, 0, 335, 336, 337, 0, 338,
1213 0, 0, 128, 129, 18, 19, 20, 21, 22, 23,
1214 24, 25, 26, 66, 0, 339, 27, 0, 0, 130,
1215 0, 0, 0, 0, 340, 498, 0, 0, 132, 133,
1216 134, 135, 0, 0, 0, 0, 0, 136, 0, 0,
1217 0, 137, 429, 430, 431, 432, 433, 434, 435, 436,
1218 437, 438, 439, 440, 441, 442, 0, 0, 0, 0,
1219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1220 0, 0, 0, 0, 0, 0, 0, 0, 28, 0,
1221 0, 212, 0, 0, 0, 66, 138, 0, 0, 139,
1222 140, 141, 325, 326, 327, 0, 328, 0, 0, 329,
1223 0, 124, 125, 330, 331, 332, 7, 333, 8, 334,
1224 126, 127, 0, 10, 0, 12, 0, 0, 0, 0,
1225 0, 335, 336, 337, 0, 338, 0, 0, 128, 129,
1226 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
1227 0, 339, 27, 0, 0, 130, 0, 0, 0, 0,
1228 340, 0, 0, 0, 132, 133, 134, 135, 0, 0,
1229 0, 0, 0, 136, 0, 0, 0, 137, 0, 0,
1230 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1231 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1233 0, 0, 0, 0, 28, 0, 0, 212, 0, 0,
1234 0, 66, 138, 0, 0, 139, 140, 141, 325, 326,
1235 327, 0, 328, 0, 0, 329, 0, 124, 125, 330,
1236 3453 331, 332, 7, 333, 8, 334, 126, 127, 0, 10,
1237 3453 0, 12, 0, 0, 0, 0, 0, 335, 336, 337,
1238 3453 0, 338, 0, 0, 128, 129, 18, 19, 20, 21,
1239 3453 22, 23, 24, 25, 26, 0, 0, 339, 27, 0,
1240 3453 0, 130, 0, 0, 0, 0, 340, 0, 0, 0,
1241 3453 132, 133, 134, 135, 0, 0, 0, 0, 0, 136,
1242 3453 0, 0, 0, 137, 0, 7, 0, 8, 513, 0,
1243 3453 0, 0, 10, 0, 12, 0, 0, 0, 0, 0,
1244 0, 0, 0, 14, 15, 16, 17, 0, 0, 18,
1245 19, 20, 21, 22, 23, 24, 25, 26, 0, 0,
1246 28, 27, 0, 0, 0, 0, 0, 66, 138, 0,
1247 514, 139, 140, 141, 325, 326, 327, 0, 328, 0,
1248 0, 329, 0, 124, 125, 330, 545, 546, 7, 333,
1249 5981 8, 334, 126, 127, 0, 10, 0, 0, 0, 0,
1250
3/8
✓ Branch 0 taken 5981 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5981 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 5981 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
5981 0, 0, 0, 335, 336, 0, 0, 338, 0, 0,
1251 128, 129, 0, 19, 20, 21, 22, 23, 24, 25,
1252 26, 0, 0, 28, 27, 0, 212, 130, 0, 0,
1253 66, 0, 340, 0, 0, 0, 132, 133, 134, 135,
1254 0, 0, 0, 0, 0, 136, 0, 0, 0, 137,
1255 3452 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1256
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 0, 0, 0, 0, 0, 0, 4, 5, 0, 0,
1257 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
1258 0, 0, 7, 0, 8, 9, 28, 0, 0, 10,
1259 11, 12, 13, 66, 138, 0, 0, 139, 140, 141,
1260 14, 15, 16, 17, 0, 0, 18, 19, 20, 21,
1261 939 22, 23, 24, 25, 26, 4, 5, 0, 27, 0,
1262 939 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
1263 939 0, 7, 0, 8, 9, 0, 0, 0, 10, 11,
1264 939 12, 13, 0, 0, 0, 0, 0, 0, 0, 14,
1265 939 15, 16, 17, 0, 0, 18, 19, 20, 21, 22,
1266 23, 24, 25, 26, 0, 0, 0, 27, 0, 0,
1267 4, 5, 0, 0, 0, 0, 0, 0, 0, 0,
1268 28, 0, 0, 29, 0, 0, 7, 30, 8, 289,
1269 0, 0, 0, 10, 11, 12, 0, 0, 0, 0,
1270 0, 0, 0, 0, 14, 15, 16, 17, 0, 0,
1271 18, 19, 20, 21, 22, 23, 24, 25, 26, 4,
1272 5, 0, 27, 0, 0, 0, 0, 0, 0, 28,
1273 0, 290, 443, 0, 0, 7, 30, 8, 289, 0,
1274 0, 0, 10, 11, 12, 317, 0, 0, 124, 125,
1275 0, 0, 0, 14, 15, 16, 17, 126, 127, 18,
1276 19, 20, 21, 22, 23, 24, 25, 26, 0, 0,
1277
2/6
✓ Branch 0 taken 3453 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3453 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3453 0, 27, 0, 0, 0, 128, 129, 0, 0, 0,
1278 450, 0, 0, 0, 28, 0, 0, 212, 0, 27,
1279 0, 30, 130, 0, 0, 0, 0, 131, 0, 0,
1280 0, 132, 133, 134, 135, 0, 0, 0, 0, 0,
1281 136, 0, 0, 0, 137, 0, 0, 0, 0, 0,
1282 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1283 0, 0, 0, 28, 0, 0, 212, 0, 124, 125,
1284 30, 0, 0, 7, 0, 0, 0, 126, 127, 0,
1285 0, 0, 0, 0, 0, 0, 0, 318, 66, 138,
1286 0, 0, 139, 140, 141, 128, 129, 0, 19, 20,
1287 21, 22, 23, 24, 25, 26, 0, 0, 0, 27,
1288 0, 0, 562, 563, 0, 564, 0, 131, 0, 0,
1289 84 0, 132, 133, 134, 135, 0, 0, 0, 0, 0,
1290 4295 136, 0, 124, 125, 137, 0, 0, 7, 0, 0,
1291 0, 126, 127, 0, 0, 0, 0, 0, 0, 0,
1292 4 0, 0, 0, 0, 0, 0, 0, 0, 0, 128,
1293 7 129, 0, 19, 20, 21, 22, 23, 24, 25, 26,
1294 2 0, 0, 0, 27, 0, 0, 130, 0, 565, 138,
1295 0, 131, 139, 140, 141, 132, 133, 134, 135, 0,
1296 0, 0, 0, 0, 136, 0, 0, 0, 137, 0,
1297 0, 0, 0, 0, 0, 0, 0, 0, 124, 125,
1298 0, 0, 0, 0, 0, 0, 0, 126, 127, 0,
1299 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1300 0, 124, 125, 0, 0, 128, 129, 0, 0, 0,
1301 126, 127, 66, 138, 0, 0, 139, 140, 141, 27,
1302 0, 0, 562, 0, 0, 564, 0, 131, 128, 129,
1303 0, 132, 133, 134, 135, 0, 0, 0, 0, 0,
1304 163 136, 0, 27, 0, 137, 562, 0, 0, 564, 0,
1305 163 131, 0, 0, 0, 132, 133, 134, 135, 0, 0,
1306
2/2
✓ Branch 0 taken 48 times.
✓ Branch 1 taken 115 times.
163 0, 0, 0, 136, 0, 0, 0, 137, 0, 0,
1307 115 0, 0, 0, 0, 0, 0, 0, 124, 125, 0,
1308 163 0, 0, 0, 0, 0, 0, 126, 127, 66, 138,
1309 700, 0, 139, 140, 141, 0, 0, 124, 125, 0,
1310
2/6
✓ Branch 0 taken 18529 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18529 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
18529 0, 0, 0, 0, 128, 129, 126, 127, 0, 0,
1311 0, 66, 138, 726, 0, 139, 140, 141, 27, 0,
1312 0, 130, 402, 0, 128, 129, 131, 0, 0, 0,
1313 132, 133, 134, 135, 0, 0, 0, 0, 27, 136,
1314 0, 130, 527, 137, 0, 0, 131, 0, 0, 0,
1315 132, 133, 134, 135, 0, 0, 0, 0, 0, 136,
1316 0, 0, 0, 137, 0, 0, 0, 0, 0, 0,
1317 0, 0, 0, 124, 125, 0, 0, 0, 0, 0,
1318 18690 0, 0, 126, 127, 0, 0, 0, 66, 138, 0,
1319 18690 0, 139, 140, 141, 0, 0, 0, 0, 0, 0,
1320
2/6
✓ Branch 0 taken 18690 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18690 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
18690 128, 129, 0, 0, 0, 0, 0, 66, 138, 124,
1321 125, 139, 140, 141, 27, 0, 0, 130, 126, 127,
1322 0, 0, 131, 445, 0, 0, 132, 133, 134, 135,
1323 0, 0, 0, 0, 0, 136, 128, 129, 0, 137,
1324 2 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1325 2 27, 124, 125, 562, 0, 0, 564, 0, 131, 0,
1326
2/6
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2 126, 127, 132, 133, 134, 135, 0, 0, 0, 0,
1327 0, 136, 0, 0, 0, 137, 0, 0, 128, 129,
1328 0, 0, 0, 66, 138, 0, 0, 139, 140, 141,
1329 0, 0, 27, 0, 0, 130, 0, 0, 0, 0,
1330 131, 684, 124, 125, 132, 133, 134, 135, 0, 0,
1331 0, 126, 127, 136, 0, 0, 0, 137, 0, 66,
1332 138, 0, 0, 139, 140, 141, 0, 0, 0, 128,
1333 129, 0, 124, 125, 0, 0, 0, 0, 0, 0,
1334 0, 126, 127, 27, 0, 0, 130, 0, 0, 0,
1335 0, 131, 0, 0, 0, 132, 133, 134, 135, 128,
1336 0, 66, 138, 0, 136, 139, 140, 141, 137, 0,
1337 0, 0, 0, 27, 0, 0, 130, 0, 0, 0,
1338 0, 131, 0, 0, 0, 132, 133, 134, 135, 0,
1339 0, 0, 0, 0, 136, 0, 0, 0, 137, 0,
1340 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1341 0, 0, 66, 138, 0, 0, 139, 140, 141, 0,
1342 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1343 0, 7, 0, 8, 208, 0, 0, 0, 10, 0,
1344 12, 0, 66, 138, 0, 0, 139, 140, 141, 14,
1345 209, 16, 17, 0, 0, 18, 19, 20, 21, 22,
1346 23, 24, 25, 26, 0, 0, 7, 27, 8, 208,
1347 0, 0, 0, 10, 0, 12, 210, 0, 0, 0,
1348 0, 0, 211, 0, 14, 209, 16, 17, 0, 0,
1349 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
1350 0, 0, 27, 0, 0, 0, 0, 0, 0, 0,
1351 0, 387, 0, 0, 0, 0, 0, 211, 0, 0,
1352 0, 7, 0, 8, 513, 0, 0, 0, 10, 28,
1353 12, 0, 212, 0, 0, 0, 66, 0, 0, 14,
1354 15, 16, 17, 0, 0, 18, 19, 20, 21, 22,
1355 23, 24, 25, 26, 0, 0, 7, 27, 8, 208,
1356 0, 0, 0, 10, 28, 12, 591, 212, 0, 0,
1357 0, 66, 0, 0, 14, 15, 16, 17, 0, 0,
1358 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
1359 0, 0, 27, 0, 0, 0, 0, 0, 0, 0,
1360 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
1361 1089508 0, 8, 513, 0, 0, 0, 10, 0, 12, 28,
1362
3/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1089508 times.
✓ Branch 2 taken 387376 times.
✓ Branch 3 taken 702132 times.
1089508 0, 0, 212, 0, 0, 0, 66, 14, 15, 16,
1363 17, 0, 0, 18, 19, 20, 21, 22, 23, 24,
1364 387376 25, 26, 0, 0, 0, 27, 0, 0, 0, 0,
1365 387376 0, 0, 0, 0, 28, 0, 0, 0, 0, 0,
1366 0, 66, 0, 0, 0, 0, 0, 0, 0, 0,
1367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1368
2/6
✓ Branch 0 taken 702132 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 702132 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
702132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1369 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1370 0, 0, 0, 0, 0, 0, 0, 28, 0, 0,
1371 0, 0, 0, 0, 66
1372 };
1373
1374 static const yytype_int16 yycheck[] =
1375 {
1376 2, 2, 234, 41, 2, 7, 8, 100, 2, 85,
1377 500979 292, 220, 14, 15, 16, 17, 2, 15, 51, 266,
1378 2, 2, 2, 2, 2, 475, 193, 371, 41, 521,
1379 816 476, 180, 175, 26, 475, 475, 475, 11, 11, 41,
1380 11, 627, 475, 2, 475, 76, 509, 2, 31, 32,
1381 33, 475, 55, 60, 54, 14, 288, 16, 17, 52,
1382 1381336 6, 2, 59, 54, 565, 51, 79, 55, 475, 71,
1383 434666 60, 678, 60, 26, 59, 475, 78, 79, 664, 76,
1384 728104 26, 2, 55, 60, 61, 132, 133, 134, 135, 136,
1385 40840 58, 60, 60, 59, 64, 52, 0, 16, 52, 52,
1386 150140 707, 52, 76, 76, 10, 11, 52, 183, 184, 185,
1387 1 64, 612, 188, 64, 91, 34, 21, 124, 63, 121,
1388 6323 121, 124, 585, 121, 52, 82, 128, 121, 125, 129,
1389 590 716, 124, 129, 130, 124, 137, 124, 2, 129, 122,
1390 125, 58, 121, 8, 287, 65, 91, 178, 186, 14,
1391 1123109 15, 16, 17, 124, 124, 124, 124, 306, 64, 125,
1392
2/6
✓ Branch 0 taken 98277 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 98277 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
98277 209, 58, 121, 91, 124, 611, 121, 60, 61, 89,
1393 662, 220, 27, 340, 176, 176, 28, 627, 176, 124,
1394 121, 58, 176, 80, 351, 127, 627, 627, 627, 82,
1395 124, 193, 225, 195, 627, 641, 627, 176, 211, 246,
1396 121, 83, 84, 627, 178, 178, 71, 209, 90, 211,
1397 53, 209, 55, 78, 664, 447, 3, 176, 220, 220,
1398
2/6
✓ Branch 0 taken 21950 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21950 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
21950 627, 176, 220, 664, 664, 664, 220, 627, 110, 52,
1399 54, 664, 53, 664, 55, 176, 54, 58, 56, 62,
1400 664, 220, 52, 75, 76, 63, 284, 52, 324, 59,
1401 57, 58, 59, 60, 59, 176, 121, 664, 53, 80,
1402 55, 220, 52, 52, 664, 220, 716, 74, 75, 59,
1403 59, 52, 137, 124, 52, 716, 716, 716, 59, 220,
1404
2/6
✓ Branch 0 taken 8044 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8044 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
8044 282, 59, 54, 716, 282, 716, 630, 54, 282, 536,
1405 292, 292, 716, 53, 292, 55, 282, 54, 292, 220,
1406 282, 282, 282, 282, 282, 381, 77, 78, 346, 716,
1407 52, 176, 3, 292, 61, 348, 716, 59, 600, 66,
1408 67, 68, 52, 282, 400, 60, 54, 282, 63, 59,
1409 195, 333, 59, 292, 63, 62, 338, 292, 340, 59,
1410 338, 282, 62, 54, 209, 79, 80, 81, 82, 351,
1411 131112 351, 292, 54, 14, 15, 220, 105, 106, 107, 108,
1412 109, 282, 23, 24, 254, 255, 256, 257, 53, 371,
1413 55, 292, 124, 449, 72, 73, 74, 379, 379, 129,
1414 130, 379, 475, 56, 57, 379, 595, 258, 259, 260,
1415 161450 261, 31, 32, 33, 55, 63, 472, 58, 63, 401,
1416 379, 55, 63, 44, 45, 46, 47, 48, 49, 50,
1417 51, 27, 488, 58, 55, 491, 58, 282, 127, 80,
1418 379, 247, 248, 249, 379, 10, 11, 292, 250, 251,
1419 127, 69, 252, 253, 52, 124, 117, 124, 379, 58,
1420 71, 58, 85, 58, 58, 58, 125, 85, 87, 86,
1421 59, 63, 88, 685, 11, 58, 122, 54, 379, 19,
1422 54, 54, 629, 124, 125, 54, 54, 128, 129, 130,
1423 127, 124, 58, 475, 476, 477, 59, 475, 38, 58,
1424 124, 475, 54, 124, 44, 45, 46, 47, 48, 49,
1425 50, 51, 130, 131, 59, 55, 475, 125, 54, 501,
1426 54, 54, 54, 54, 59, 52, 371, 509, 58, 58,
1427 586, 678, 58, 121, 379, 121, 121, 121, 58, 521,
1428 521, 121, 121, 521, 58, 58, 58, 521, 58, 54,
1429 54, 54, 54, 8, 627, 54, 54, 54, 54, 59,
1430 707, 62, 521, 710, 59, 183, 184, 185, 59, 56,
1431 188, 189, 127, 59, 59, 54, 54, 54, 725, 54,
1432 19, 563, 521, 59, 124, 58, 521, 58, 54, 54,
1433 54, 664, 54, 54, 62, 54, 59, 91, 52, 59,
1434 521, 129, 59, 585, 129, 44, 45, 46, 47, 48,
1435 49, 50, 51, 595, 59, 59, 55, 595, 600, 675,
1436
2/6
✓ Branch 0 taken 7694 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7694 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
7694 521, 595, 600, 241, 242, 59, 600, 58, 58, 82,
1437 59, 476, 477, 59, 59, 52, 595, 619, 59, 621,
1438 622, 600, 624, 716, 63, 627, 628, 629, 630, 627,
1439 59, 63, 708, 627, 54, 59, 595, 59, 8, 8,
1440 595, 600, 8, 59, 509, 600, 105, 59, 627, 8,
1441 1159033 56, 91, 8, 8, 595, 8, 521, 59, 56, 600,
1442
2/6
✓ Branch 0 taken 203 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 203 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
203 662, 56, 664, 665, 662, 124, 664, 669, 662, 671,
1443 664, 673, 674, 56, 595, 56, 678, 679, 8, 600,
1444 682, 59, 56, 662, 56, 664, 324, 282, 56, 7,
1445 630, 329, 501, 220, 696, 62, 106, 41, 348, 262,
1446 396, 336, 340, 662, 263, 707, 401, 662, 710, 710,
1447 1864445 712, 713, 677, 708, 716, 717, 718, 719, 716, 19,
1448 1864445 585, 662, 716, 725, 725, 264, 70, 265, 129, -1,
1449 1864445 595, 267, 663, -1, 736, 600, -1, 716, 740, -1,
1450 1864445 -1, 662, -1, 381, 44, 45, 46, 47, 48, 49,
1451 50, 51, -1, -1, 563, 55, -1, -1, 396, -1,
1452 398, -1, 400, 19, -1, 630, -1, -1, 112, 113,
1453 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
1454 -1, 37, 38, 39, 40, -1, -1, -1, 44, 45,
1455 46, 47, 48, 49, 50, 51, -1, 662, -1, 55,
1456 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1457 619, 449, 621, 622, -1, 624, -1, -1, -1, 628,
1458 -1, -1, -1, -1, 124, -1, -1, -1, -1, -1,
1459 1541222 -1, 175, -1, -1, 472, -1, -1, -1, 476, 477,
1460
2/6
✓ Branch 0 taken 1541222 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1541222 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1541222 -1, 479, 186, 481, -1, -1, -1, -1, -1, -1,
1461 488, 489, 196, 491, -1, -1, 665, -1, -1, -1,
1462 669, -1, 671, -1, 673, 674, -1, -1, 124, -1,
1463 679, -1, 510, 682, 91, 92, 93, 94, 95, 96,
1464 4883 97, 98, 99, 100, 101, 102, 103, 696, -1, -1,
1465
2/6
✓ Branch 0 taken 4883 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4883 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4883 -1, -1, -1, -1, -1, 533, 113, -1, -1, -1,
1466 -1, -1, 11, 712, 713, 14, 15, -1, 717, 718,
1467 719, -1, -1, -1, 23, 24, -1, -1, -1, -1,
1468 -1, -1, -1, -1, 562, -1, 564, 736, -1, -1,
1469 -1, 740, 41, 42, -1, -1, -1, -1, -1, -1,
1470 284, -1, -1, 287, -1, -1, 55, -1, 586, 58,
1471 685923 -1, -1, -1, -1, 63, -1, -1, -1, 67, 68,
1472 69, 70, -1, -1, -1, -1, 604, 76, -1, 607,
1473 42181 -1, 80, -1, 611, -1, 613, 614, 615, 616, 617,
1474 42181 618, -1, -1, -1, -1, -1, -1, 625, 626, -1,
1475 42181 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1476 638, 639, 346, 641, -1, -1, -1, -1, 3, 4,
1477 -1, 649, -1, -1, 123, 124, 125, -1, -1, 128,
1478 129, 130, -1, -1, 19, 663, 21, 22, 372, -1,
1479 668, 26, 27, 28, -1, -1, -1, 675, -1, -1,
1480 -1, -1, 37, 38, 39, 40, -1, -1, 43, 44,
1481 15 45, 46, 47, 48, 49, 50, 51, 695, -1, -1,
1482 15 55, -1, 5, 6, 7, -1, 9, 10, 11, 12,
1483
2/6
✓ Branch 0 taken 15 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 15 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
15 708, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1484 23, 24, -1, 26, -1, 28, -1, -1, -1, -1,
1485 -1, 34, 35, 36, -1, 38, -1, -1, 41, 42,
1486 43, 44, 45, 46, 47, 48, 49, 50, 51, -1,
1487 -1, 54, 55, -1, -1, 58, -1, -1, -1, -1,
1488 63, -1, 117, -1, 67, 68, 69, 70, -1, 124,
1489 -1, 475, 19, 76, -1, -1, -1, 80, -1, -1,
1490 523741 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1491 523741 37, 38, 39, 40, -1, -1, -1, 44, 45, 46,
1492
2/6
✓ Branch 0 taken 523741 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 523741 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
523741 47, 48, 49, 50, 51, -1, -1, 511, 55, -1,
1493 -1, -1, -1, -1, 117, -1, -1, 120, -1, -1,
1494 204348 -1, 124, 125, -1, -1, 128, 129, 130, -1, -1,
1495 204348 5, 6, 7, -1, 9, -1, -1, 12, -1, 14,
1496 204348 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1497
2/6
✓ Branch 0 taken 204348 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 204348 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
204348 -1, 26, -1, 28, -1, -1, -1, -1, -1, 34,
1498 35, 36, -1, 38, -1, 569, 41, 42, 43, 44,
1499 45, 46, 47, 48, 49, 50, 51, 124, -1, 54,
1500 55, -1, -1, 58, -1, -1, -1, -1, 63, 64,
1501 -1, -1, 67, 68, 69, 70, -1, -1, 19, -1,
1502 40840 -1, 76, -1, -1, -1, 80, -1, -1, -1, -1,
1503 40840 -1, -1, -1, -1, -1, -1, 37, 38, 39, 40,
1504 40840 -1, -1, -1, 44, 45, 46, 47, 48, 49, 50,
1505 40840 51, -1, -1, -1, 55, -1, -1, -1, -1, -1,
1506 -1, -1, 117, -1, -1, 120, -1, -1, -1, 124,
1507 125, -1, -1, 128, 129, 130, 5, 6, 7, -1,
1508 9, -1, -1, 12, -1, 14, 15, 16, 17, 18,
1509 346184 19, 20, 21, 22, 23, 24, -1, 26, -1, 28,
1510 346184 -1, -1, -1, -1, -1, 34, 35, 36, -1, 38,
1511 346184 -1, -1, 41, 42, 43, 44, 45, 46, 47, 48,
1512 346184 49, 50, 51, 124, -1, 54, 55, -1, -1, 58,
1513 346184 -1, -1, -1, -1, 63, 64, -1, -1, 67, 68,
1514 346184 69, 70, -1, -1, -1, -1, -1, 76, -1, -1,
1515 -1, 80, 268, 269, 270, 271, 272, 273, 274, 275,
1516
2/6
✓ Branch 0 taken 40840 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 40840 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
40840 276, 277, 278, 279, 280, 281, -1, -1, -1, -1,
1517 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1518 -1, -1, -1, -1, -1, -1, -1, -1, 117, -1,
1519 -1, 120, -1, -1, -1, 124, 125, -1, -1, 128,
1520 129, 130, 5, 6, 7, -1, 9, -1, -1, 12,
1521 -1, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1522 23, 24, -1, 26, -1, 28, -1, -1, -1, -1,
1523 -1, 34, 35, 36, -1, 38, -1, -1, 41, 42,
1524 43, 44, 45, 46, 47, 48, 49, 50, 51, -1,
1525 -1, 54, 55, -1, -1, 58, -1, -1, -1, -1,
1526 21459 63, -1, -1, -1, 67, 68, 69, 70, -1, -1,
1527 21459 -1, -1, -1, 76, -1, -1, -1, 80, -1, -1,
1528 21459 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1529 21459 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1530 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1531 1627 -1, -1, -1, -1, 117, -1, -1, 120, -1, -1,
1532 1627 -1, 124, 125, -1, -1, 128, 129, 130, 5, 6,
1533 1627 7, -1, 9, -1, -1, 12, -1, 14, 15, 16,
1534 17, 18, 19, 20, 21, 22, 23, 24, -1, 26,
1535 817 -1, 28, -1, -1, -1, -1, -1, 34, 35, 36,
1536 817 -1, 38, -1, -1, 41, 42, 43, 44, 45, 46,
1537 817 47, 48, 49, 50, 51, -1, -1, 54, 55, -1,
1538 817 -1, 58, -1, -1, -1, -1, 63, -1, -1, -1,
1539 67, 68, 69, 70, -1, -1, -1, -1, -1, 76,
1540 -1, -1, -1, 80, -1, 19, -1, 21, 22, -1,
1541 -1, -1, 26, -1, 28, -1, -1, -1, -1, -1,
1542 -1, -1, -1, 37, 38, 39, 40, -1, -1, 43,
1543 44, 45, 46, 47, 48, 49, 50, 51, -1, -1,
1544 117, 55, -1, -1, -1, -1, -1, 124, 125, -1,
1545 64, 128, 129, 130, 5, 6, 7, -1, 9, -1,
1546 -1, 12, -1, 14, 15, 16, 17, 18, 19, 20,
1547
2/6
✓ Branch 0 taken 356065 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 356065 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
356065 21, 22, 23, 24, -1, 26, -1, -1, -1, -1,
1548 -1, -1, -1, 34, 35, -1, -1, 38, -1, -1,
1549 41, 42, -1, 44, 45, 46, 47, 48, 49, 50,
1550 51, -1, -1, 117, 55, -1, 120, 58, -1, -1,
1551 124, -1, 63, -1, -1, -1, 67, 68, 69, 70,
1552
2/6
✓ Branch 0 taken 1624 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1624 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1624 -1, -1, -1, -1, -1, 76, -1, -1, -1, 80,
1553 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1554 -1, -1, -1, -1, -1, -1, 3, 4, -1, -1,
1555 -1, -1, -1, -1, -1, -1, 13, -1, -1, -1,
1556 -1, -1, 19, -1, 21, 22, 117, -1, -1, 26,
1557 27, 28, 29, 124, 125, -1, -1, 128, 129, 130,
1558 37, 38, 39, 40, -1, -1, 43, 44, 45, 46,
1559 47, 48, 49, 50, 51, 3, 4, -1, 55, -1,
1560 -1, -1, -1, -1, -1, 13, -1, -1, -1, -1,
1561 -1, 19, -1, 21, 22, -1, -1, -1, 26, 27,
1562 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
1563 38, 39, 40, -1, -1, 43, 44, 45, 46, 47,
1564
2/6
✓ Branch 0 taken 29335 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 29335 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
29335 48, 49, 50, 51, -1, -1, -1, 55, -1, -1,
1565 3, 4, -1, -1, -1, -1, -1, -1, -1, -1,
1566 117, -1, -1, 120, -1, -1, 19, 124, 21, 22,
1567 -1, -1, -1, 26, 27, 28, -1, -1, -1, -1,
1568 -1, -1, -1, -1, 37, 38, 39, 40, -1, -1,
1569 43, 44, 45, 46, 47, 48, 49, 50, 51, 3,
1570 150125 4, -1, 55, -1, -1, -1, -1, -1, -1, 117,
1571 15 -1, 64, 120, -1, -1, 19, 124, 21, 22, -1,
1572 -1, -1, 26, 27, 28, 11, -1, -1, 14, 15,
1573 -1, -1, -1, 37, 38, 39, 40, 23, 24, 43,
1574 44, 45, 46, 47, 48, 49, 50, 51, -1, -1,
1575 -1, 55, -1, -1, -1, 41, 42, -1, -1, -1,
1576 64, -1, -1, -1, 117, -1, -1, 120, -1, 55,
1577 -1, 124, 58, -1, -1, -1, -1, 63, -1, -1,
1578 -1, 67, 68, 69, 70, -1, -1, -1, -1, -1,
1579 76, -1, -1, -1, 80, -1, -1, -1, -1, -1,
1580 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1581
1/2
✓ Branch 0 taken 150128 times.
✗ Branch 1 not taken.
150128 -1, -1, -1, 117, -1, -1, 120, -1, 14, 15,
1582 124, -1, -1, 19, -1, -1, -1, 23, 24, -1,
1583 -1, -1, -1, -1, -1, -1, -1, 123, 124, 125,
1584 -1, -1, 128, 129, 130, 41, 42, -1, 44, 45,
1585 46, 47, 48, 49, 50, 51, -1, -1, -1, 55,
1586 -1, -1, 58, 59, -1, 61, -1, 63, -1, -1,
1587 -1, 67, 68, 69, 70, -1, -1, -1, -1, -1,
1588 76, -1, 14, 15, 80, -1, -1, 19, -1, -1,
1589 -1, 23, 24, -1, -1, -1, -1, -1, -1, -1,
1590 -1, -1, -1, -1, -1, -1, -1, -1, -1, 41,
1591 42, -1, 44, 45, 46, 47, 48, 49, 50, 51,
1592 -1, -1, -1, 55, -1, -1, 58, -1, 124, 125,
1593 -1, 63, 128, 129, 130, 67, 68, 69, 70, -1,
1594 150124 -1, -1, -1, -1, 76, -1, -1, -1, 80, -1,
1595 150124 -1, -1, -1, -1, -1, -1, -1, -1, 14, 15,
1596 150124 -1, -1, -1, -1, -1, -1, -1, 23, 24, -1,
1597 150124 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1598
2/6
✓ Branch 0 taken 150124 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 150124 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
150124 -1, 14, 15, -1, -1, 41, 42, -1, -1, -1,
1599 23, 24, 124, 125, -1, -1, 128, 129, 130, 55,
1600 -1, -1, 58, -1, -1, 61, -1, 63, 41, 42,
1601 -1, 67, 68, 69, 70, -1, -1, -1, -1, -1,
1602 76, -1, 55, -1, 80, 58, -1, -1, 61, -1,
1603 63, -1, -1, -1, 67, 68, 69, 70, -1, -1,
1604 -1, -1, -1, 76, -1, -1, -1, 80, -1, -1,
1605 -1, -1, -1, -1, -1, -1, -1, 14, 15, -1,
1606 1 -1, -1, -1, -1, -1, -1, 23, 24, 124, 125,
1607 1 126, -1, 128, 129, 130, -1, -1, 14, 15, -1,
1608 1 -1, -1, -1, -1, 41, 42, 23, 24, -1, -1,
1609 1 -1, 124, 125, 126, -1, 128, 129, 130, 55, -1,
1610 1 -1, 58, 59, -1, 41, 42, 63, -1, -1, -1,
1611
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 67, 68, 69, 70, -1, -1, -1, -1, 55, 76,
1612 -1, 58, 59, 80, -1, -1, 63, -1, -1, -1,
1613 67, 68, 69, 70, -1, -1, -1, -1, -1, 76,
1614 -1, -1, -1, 80, -1, -1, -1, -1, -1, -1,
1615 -1, -1, -1, 14, 15, -1, -1, -1, -1, -1,
1616 -1, -1, 23, 24, -1, -1, -1, 124, 125, -1,
1617 -1, 128, 129, 130, -1, -1, -1, -1, -1, -1,
1618 41, 42, -1, -1, -1, -1, -1, 124, 125, 14,
1619 15 15, 128, 129, 130, 55, -1, -1, 58, 23, 24,
1620 15 -1, -1, 63, 64, -1, -1, 67, 68, 69, 70,
1621 15 -1, -1, -1, -1, -1, 76, 41, 42, -1, 80,
1622 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1623
2/6
✓ Branch 0 taken 15 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 15 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
15 55, 14, 15, 58, -1, -1, 61, -1, 63, -1,
1624 23, 24, 67, 68, 69, 70, -1, -1, -1, -1,
1625 -1, 76, -1, -1, -1, 80, -1, -1, 41, 42,
1626 -1, -1, -1, 124, 125, -1, -1, 128, 129, 130,
1627 -1, -1, 55, -1, -1, 58, -1, -1, -1, -1,
1628 63, 64, 14, 15, 67, 68, 69, 70, -1, -1,
1629 -1, 23, 24, 76, -1, -1, -1, 80, -1, 124,
1630 125, -1, -1, 128, 129, 130, -1, -1, -1, 41,
1631 42, -1, 14, 15, -1, -1, -1, -1, -1, -1,
1632 -1, 23, 24, 55, -1, -1, 58, -1, -1, -1,
1633 -1, 63, -1, -1, -1, 67, 68, 69, 70, 41,
1634 -1, 124, 125, -1, 76, 128, 129, 130, 80, -1,
1635 -1, -1, -1, 55, -1, -1, 58, -1, -1, -1,
1636 -1, 63, -1, -1, -1, 67, 68, 69, 70, -1,
1637 -1, -1, -1, -1, 76, -1, -1, -1, 80, -1,
1638 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1639 -1, -1, 124, 125, -1, -1, 128, 129, 130, -1,
1640 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1641 -1, 19, -1, 21, 22, -1, -1, -1, 26, -1,
1642 28, -1, 124, 125, -1, -1, 128, 129, 130, 37,
1643 38, 39, 40, -1, -1, 43, 44, 45, 46, 47,
1644 48, 49, 50, 51, -1, -1, 19, 55, 21, 22,
1645 -1, -1, -1, 26, -1, 28, 64, -1, -1, -1,
1646 -1, -1, 70, -1, 37, 38, 39, 40, -1, -1,
1647 43, 44, 45, 46, 47, 48, 49, 50, 51, -1,
1648 -1, -1, 55, -1, -1, -1, -1, -1, -1, -1,
1649 -1, 64, -1, -1, -1, -1, -1, 70, -1, -1,
1650 -1, 19, -1, 21, 22, -1, -1, -1, 26, 117,
1651 28, -1, 120, -1, -1, -1, 124, -1, -1, 37,
1652 38, 39, 40, -1, -1, 43, 44, 45, 46, 47,
1653 48, 49, 50, 51, -1, -1, 19, 55, 21, 22,
1654 -1, -1, -1, 26, 117, 28, 64, 120, -1, -1,
1655 -1, 124, -1, -1, 37, 38, 39, 40, -1, -1,
1656 43, 44, 45, 46, 47, 48, 49, 50, 51, -1,
1657 -1, -1, 55, -1, -1, -1, -1, -1, -1, -1,
1658 -1, -1, -1, -1, -1, -1, -1, -1, -1, 19,
1659 -1, 21, 22, -1, -1, -1, 26, -1, 28, 117,
1660 -1, -1, 120, -1, -1, -1, 124, 37, 38, 39,
1661 40, -1, -1, 43, 44, 45, 46, 47, 48, 49,
1662 1 50, 51, -1, -1, -1, 55, -1, -1, -1, -1,
1663 -1, -1, -1, -1, 117, -1, -1, -1, -1, -1,
1664 -1, 124, -1, -1, -1, -1, -1, -1, -1, -1,
1665 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1666 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1667 1 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1668 -1, -1, -1, -1, -1, -1, -1, 117, -1, -1,
1669 -1, -1, -1, -1, 124
1670 };
1671
1672 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
1673 state STATE-NUM. */
1674 static const yytype_uint8 yystos[] =
1675 {
1676 0, 132, 133, 0, 3, 4, 13, 19, 21, 22,
1677 26, 27, 28, 29, 37, 38, 39, 40, 43, 44,
1678 45, 46, 47, 48, 49, 50, 51, 55, 117, 120,
1679 124, 134, 136, 139, 140, 141, 142, 143, 144, 145,
1680 146, 147, 148, 149, 150, 151, 158, 167, 174, 175,
1681 176, 180, 181, 207, 208, 210, 211, 213, 214, 215,
1682 216, 217, 21, 124, 166, 127, 124, 149, 147, 58,
1683 63, 91, 124, 212, 214, 216, 27, 28, 38, 147,
1684 158, 151, 158, 158, 158, 58, 124, 31, 32, 33,
1685 122, 54, 54, 54, 54, 60, 152, 153, 154, 159,
1686 1 160, 211, 217, 54, 54, 3, 52, 124, 175, 208,
1687 54, 216, 53, 210, 53, 210, 53, 210, 53, 210,
1688 176, 63, 168, 124, 14, 15, 23, 24, 41, 42,
1689 58, 63, 67, 68, 69, 70, 76, 80, 125, 128,
1690 129, 130, 211, 218, 219, 221, 222, 223, 224, 225,
1691 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
1692 236, 237, 238, 239, 240, 242, 245, 246, 247, 248,
1693 249, 153, 209, 217, 147, 63, 63, 212, 27, 242,
1694 58, 127, 127, 58, 11, 124, 52, 60, 61, 91,
1695 156, 54, 56, 63, 185, 58, 80, 124, 181, 217,
1696 217, 217, 217, 217, 217, 217, 217, 124, 22, 38,
1697 64, 70, 120, 139, 143, 144, 145, 151, 158, 159,
1698 169, 170, 171, 172, 173, 180, 207, 211, 58, 58,
1699 211, 238, 240, 240, 250, 225, 225, 225, 225, 225,
1700 147, 58, 61, 66, 67, 68, 71, 72, 73, 74,
1701
3/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1702 90, 110, 85, 86, 87, 88, 65, 89, 91, 92,
1703 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
1704 103, 113, 59, 125, 52, 64, 135, 63, 209, 22,
1705 64, 136, 137, 138, 139, 143, 144, 145, 150, 151,
1706 158, 167, 174, 175, 207, 212, 52, 59, 59, 76,
1707 129, 130, 246, 242, 11, 123, 242, 11, 123, 242,
1708 153, 157, 242, 240, 11, 5, 6, 7, 9, 12,
1709 16, 17, 18, 20, 22, 34, 35, 36, 38, 54,
1710 63, 64, 139, 143, 144, 145, 147, 151, 180, 183,
1711 185, 186, 187, 189, 192, 194, 195, 196, 197, 198,
1712 199, 200, 202, 203, 204, 205, 206, 207, 211, 240,
1713 241, 105, 147, 162, 163, 164, 165, 161, 217, 63,
1714 177, 58, 170, 159, 54, 54, 54, 64, 143, 170,
1715 171, 173, 54, 54, 124, 127, 58, 59, 52, 135,
1716 61, 82, 59, 220, 240, 240, 124, 225, 226, 226,
1717 226, 227, 227, 228, 228, 229, 229, 229, 229, 230,
1718 230, 230, 230, 231, 232, 233, 234, 237, 235, 239,
1719 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1720 239, 239, 239, 120, 134, 64, 153, 209, 135, 58,
1721 64, 138, 143, 54, 54, 54, 54, 54, 54, 246,
1722 129, 130, 59, 59, 59, 52, 121, 121, 121, 121,
1723 121, 121, 52, 62, 242, 58, 58, 58, 188, 58,
1724 240, 58, 54, 129, 54, 129, 182, 183, 58, 58,
1725 188, 58, 240, 54, 54, 54, 54, 197, 64, 143,
1726 183, 8, 54, 54, 54, 54, 163, 217, 59, 52,
1727 91, 52, 82, 22, 64, 139, 143, 144, 145, 151,
1728 158, 178, 179, 207, 242, 59, 59, 59, 220, 240,
1729 242, 211, 222, 52, 59, 62, 56, 135, 242, 59,
1730 59, 59, 127, 242, 54, 17, 18, 145, 151, 184,
1731 185, 187, 189, 192, 196, 202, 203, 205, 206, 207,
1732 217, 241, 58, 59, 61, 124, 147, 240, 244, 147,
1733 155, 240, 240, 240, 54, 54, 16, 34, 242, 240,
1734 242, 182, 162, 240, 217, 58, 58, 54, 54, 54,
1735 54, 64, 143, 179, 54, 59, 59, 62, 240, 237,
1736 59, 59, 129, 129, 54, 56, 57, 201, 240, 182,
1737 240, 201, 124, 105, 106, 107, 108, 109, 52, 59,
1738 217, 59, 59, 59, 59, 58, 58, 59, 59, 59,
1739 52, 162, 242, 173, 82, 138, 240, 240, 52, 52,
1740 244, 201, 240, 240, 240, 240, 240, 240, 182, 91,
1741 182, 182, 63, 182, 240, 240, 184, 182, 183, 163,
1742 164, 59, 59, 63, 54, 59, 240, 240, 52, 59,
1743 244, 59, 240, 8, 8, 10, 11, 190, 191, 8,
1744 59, 59, 8, 179, 64, 250, 184, 193, 182, 59,
1745 16 62, 59, 62, 240, 182, 52, 59, 182, 182, 182,
1746 126, 240, 242, 243, 244, 56, 64, 191, 10, 11,
1747 186, 182, 8, 8, 182, 135, 52, 59, 8, 59,
1748 240, 182, 56, 56, 56, 186, 126, 242, 243, 56,
1749 182, 182, 184, 182, 182, 182, 59, 56, 56, 56,
1750 8, 182, 182
1751 6318 };
1752 6318
1753
2/6
✓ Branch 0 taken 6318 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6318 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6318 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
1754 static const yytype_uint8 yyr1[] =
1755 {
1756 0, 131, 132, 133, 133, 133, 134, 134, 134, 134,
1757 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1758 134, 135, 135, 136, 136, 137, 137, 137, 137, 138,
1759 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
1760 5 138, 139, 140, 141, 141, 141, 142, 143, 143, 143,
1761 5 143, 143, 143, 144, 144, 145, 146, 147, 147, 148,
1762
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 148, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1763 150, 151, 151, 152, 152, 153, 153, 154, 154, 155,
1764 156, 156, 157, 157, 158, 158, 158, 158, 158, 159,
1765 159, 159, 160, 160, 161, 161, 162, 162, 162, 162,
1766 162, 163, 164, 164, 165, 166, 167, 168, 168, 169,
1767 169, 169, 169, 169, 169, 169, 169, 170, 170, 171,
1768 172, 173, 173, 173, 173, 173, 173, 173, 174, 175,
1769 176, 177, 177, 178, 178, 178, 178, 179, 179, 179,
1770 179, 179, 179, 179, 180, 180, 181, 181, 181, 181,
1771 181, 181, 182, 183, 183, 183, 183, 183, 183, 183,
1772 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1773 183, 183, 183, 183, 184, 184, 184, 184, 184, 184,
1774 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
1775 184, 184, 185, 185, 186, 186, 186, 186, 187, 187,
1776 584 188, 188, 188, 188, 189, 190, 190, 191, 191, 191,
1777 584 191, 191, 191, 191, 191, 192, 192, 193, 193, 194,
1778
2/6
✓ Branch 0 taken 584 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 584 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
584 194, 195, 195, 196, 196, 197, 197, 198, 199, 199,
1779 200, 200, 200, 200, 200, 200, 201, 201, 202, 202,
1780 202, 202, 203, 203, 203, 203, 204, 205, 205, 206,
1781 207, 207, 208, 208, 208, 209, 209, 210, 211, 211,
1782 211, 211, 212, 212, 213, 213, 213, 213, 214, 214,
1783 214, 215, 215, 216, 217, 218, 218, 219, 219, 219,
1784 219, 220, 220, 221, 221, 221, 222, 222, 223, 224,
1785 6 224, 224, 224, 224, 224, 225, 225, 225, 225, 225,
1786 6 225, 226, 226, 227, 227, 227, 227, 228, 228, 228,
1787
2/6
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6 229, 229, 229, 230, 230, 230, 230, 230, 231, 231,
1788 231, 231, 231, 232, 232, 233, 233, 234, 234, 235,
1789 235, 236, 236, 237, 237, 238, 238, 239, 239, 239,
1790 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1791 239, 239, 240, 241, 242, 243, 244, 244, 244, 244,
1792 244, 244, 244, 244, 244, 245, 245, 245, 245, 245,
1793 245, 245, 245, 246, 246, 247, 248, 248, 249, 249,
1794 249, 250, 250
1795 };
1796
1797 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
1798 static const yytype_int8 yyr2[] =
1799 {
1800 0, 2, 1, 2, 2, 0, 1, 1, 1, 2,
1801 2, 2, 1, 1, 1, 1, 2, 2, 2, 2,
1802 5, 2, 1, 4, 5, 2, 2, 1, 1, 1,
1803 2, 2, 2, 1, 1, 1, 1, 2, 2, 2,
1804 5, 3, 4, 2, 3, 7, 3, 5, 5, 5,
1805 5, 5, 5, 4, 6, 1, 3, 2, 1, 2,
1806 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1807 4, 2, 2, 3, 1, 3, 1, 2, 1, 4,
1808 1086114 3, 1, 3, 1, 2, 2, 2, 2, 2, 2,
1809
2/6
✓ Branch 0 taken 1086114 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1086114 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1086114 2, 5, 4, 7, 1, 3, 3, 1, 1, 1,
1810
2/6
✓ Branch 0 taken 36996 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 36996 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
36996 0, 2, 5, 3, 2, 1, 3, 3, 2, 2,
1811 2, 2, 2, 1, 1, 1, 1, 2, 1, 2,
1812 1, 2, 1, 2, 2, 2, 2, 5, 2, 4,
1813 1, 3, 2, 2, 2, 1, 1, 2, 1, 2,
1814 2, 2, 2, 5, 3, 1, 5, 5, 5, 6,
1815 6, 4, 1, 2, 2, 2, 2, 2, 1, 1,
1816 1, 1, 1, 1, 1, 1, 2, 2, 3, 2,
1817 3, 1, 2, 2, 1, 1, 1, 1, 1, 1,
1818 1, 1, 1, 1, 1, 1, 1, 2, 1, 2,
1819 0, 1, 3, 2, 2, 2, 1, 1, 2, 2,
1820 4, 6, 4, 6, 7, 3, 2, 4, 3, 4,
1821 4, 3, 3, 3, 2, 1, 1, 3, 1, 9,
1822 11, 7, 9, 2, 1, 1, 1, 4, 3, 1,
1823 18487 10, 9, 7, 8, 7, 5, 1, 1, 5, 7,
1824
1/2
✓ Branch 0 taken 18487 times.
✗ Branch 1 not taken.
18487 5, 7, 6, 8, 6, 8, 5, 2, 1, 5,
1825
1/2
✓ Branch 0 taken 18487 times.
✗ Branch 1 not taken.
18487 2, 1, 4, 6, 5, 3, 1, 1, 1, 1,
1826
2/2
✓ Branch 0 taken 18486 times.
✓ Branch 1 taken 1 times.
18487 1, 1, 1, 1, 3, 3, 3, 3, 3, 3,
1827
2/2
✓ Branch 0 taken 18486 times.
✓ Branch 1 taken 1 times.
18487 2, 3, 3, 1, 1, 1, 1, 4, 5, 3,
1828
1/2
✓ Branch 0 taken 18487 times.
✗ Branch 1 not taken.
18487 4, 3, 1, 1, 1, 3, 1, 4, 3, 1,
1829 2, 2, 1, 4, 1, 1, 2, 2, 2, 2,
1830 2, 1, 3, 1, 3, 3, 3, 1, 3, 3,
1831 1, 3, 3, 1, 3, 3, 3, 3, 1, 3,
1832 3, 3, 3, 1, 3, 1, 3, 1, 3, 1,
1833 3, 1, 3, 1, 5, 1, 2, 1, 3, 3,
1834 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1835 3, 3, 1, 1, 1, 1, 3, 3, 3, 3,
1836 3, 5, 5, 5, 5, 1, 1, 1, 1, 1,
1837 1, 4, 4, 2, 1, 1, 1, 1, 9, 8,
1838 3, 3, 1
1839 };
1840
1841
1842 /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */
1843 static const yytype_int8 yydprec[] =
1844 {
1845 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1846 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1847 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1848 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1849 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1850 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1851 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1852 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1853 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1854 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1855 141712 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1857 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1858 40278 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1859 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1860 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1861 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1862 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1863 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1864 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1865 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1866 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1867 119920 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1868 119920 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1869 119920 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1870
2/6
✓ Branch 0 taken 119920 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 119920 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
119920 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1871 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1872 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1873 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1874 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1875 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1876 2924183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1877 2924183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1878 2924183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1879 2924183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1880 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1881 160199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1882
2/6
✓ Branch 0 taken 160199 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 160199 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
160199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1883 0, 0, 0
1884 };
1885
1886 /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */
1887 static const yytype_int8 yymerger[] =
1888 {
1889 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1890 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1891 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1892 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1893 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1896 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1897 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1900 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1901 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1902 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1903 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1904 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1905 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1906 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1908 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1909 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1911 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1912 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1914 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1915 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1916 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1917 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1918 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1919 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1920 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1921 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1922 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1923 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1924 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1926 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1927 0, 0, 0
1928 };
1929
1930 /* YYIMMEDIATE[RULE-NUM] -- True iff rule #RULE-NUM is not to be deferred, as
1931 in the case of predicates. */
1932 1064 static const yybool yyimmediate[] =
1933 {
1934 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1936 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1937 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1938 1061 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1939 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1940 11945614 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1942 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1943 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1944 3 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1945 4146 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1946 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1947 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1948 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1949 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1950 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1951 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1952 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1953 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1954 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1955 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1956 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1957 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1958 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1960 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1961 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1962 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1963 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1964 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1965 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1966 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1967 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1968 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1969 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1970 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1971 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1972 0, 0, 0
1973 };
1974
1975 /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of
1976 list of conflicting reductions corresponding to action entry for
1977 state STATE-NUM in yytable. 0 means no conflicts. The list in
1978 yyconfl is terminated by a rule number of 0. */
1979 static const yytype_int8 yyconflp[] =
1980 {
1981 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1982 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1983 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1984 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1985 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1986 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1987 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1988 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1989 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1990 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1991 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1992 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1993 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1994 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1995 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1996 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1997 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1998 1064 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1999 1064 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2000 1064 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2001
2/4
✓ Branch 0 taken 1064 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1064 times.
✗ Branch 3 not taken.
1064 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2002 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
2003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2004 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2005 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2006 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2007 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2008 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2009 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2010 0, 0, 0, 0, 0, 5, 0, 0, 0, 0,
2011 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2012 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2013 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2014 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2015 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2016 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2017 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2018 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2019 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2020 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2021 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2022 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2023 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2024
2/4
✓ Branch 0 taken 15 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 15 times.
✗ Branch 3 not taken.
15 0, 0, 0, 0, 9, 0, 0, 0, 0, 0,
2025 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2026 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2027 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2028 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2029 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2030 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2031 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2032 11950839 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2033
2/6
✓ Branch 0 taken 11950839 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 11950839 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
23901678 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2034 0, 0, 0, 11, 0, 0, 0, 0, 0, 0,
2035
2/2
✓ Branch 0 taken 7220693 times.
✓ Branch 1 taken 4730146 times.
11950839 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2036 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2037 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2038 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2039 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2040 20334940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2041 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2042 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2043 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2044 204250 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2045 1164039 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2046 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2050
2/6
✓ Branch 0 taken 72 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 72 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
72 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2051 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2052 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2053 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2054 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2055 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2056 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2057 40 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2058 40 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2059 40 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2060 40 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2061 40 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2062 40 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2064
2/6
✓ Branch 0 taken 71055 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 71055 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
71055 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2065 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2066 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2067 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2068 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2069 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2070 1297233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2071 1297233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2072 1297233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2073 1297233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2074 1297233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2075 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2076 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2077 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2078 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2079 1157030 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2080 1157030 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2081 1157030 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2082 1157030 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2083 1157030 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2084 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2085
2/6
✓ Branch 0 taken 1297274 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1297274 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1297274 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2086 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2087 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2088 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2089 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2090 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2091 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2092 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2093 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2094 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2095 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2096 8434985 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2097 4876677 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2098 1024345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2099 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2100 14336007 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2101 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2102 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2105 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2106 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2107 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2108 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2109 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2110 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2111 7201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2112 7201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2113
2/6
✓ Branch 0 taken 7201 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7201 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
7201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2114 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2115 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2119 2559881 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2120 2559881 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2121
2/6
✓ Branch 0 taken 2559881 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2559881 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2559881 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2123 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2124 14336007 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2126
3/8
✓ Branch 0 taken 43424 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 43424 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 43424 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
43424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2128
3/8
✓ Branch 0 taken 16976 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 16976 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 16976 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
16976 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2130 1368400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2131 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2133
3/8
✓ Branch 0 taken 555545 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 555545 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 555545 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1111090 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2134 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2135 2355631 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2136 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2137 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2138 15500157 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2139 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2140
3/8
✓ Branch 0 taken 93567 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 93567 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 93567 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
93567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2141 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2142
3/8
✓ Branch 0 taken 42757 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 42757 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 42757 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
42757 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2143 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2144
3/8
✓ Branch 0 taken 262413 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 262413 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 262413 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
262413 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2145 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2146
3/8
✓ Branch 0 taken 49529 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 49529 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 49529 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
49529 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2148
3/8
✓ Branch 0 taken 6944 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6944 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 6944 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
6944 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2149 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2150 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2151 15500157 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2152 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2153 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2154 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2155 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2156 15224825 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2157 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2158
3/8
✓ Branch 0 taken 162063 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 162063 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 162063 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
324126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2159 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2160
3/8
✓ Branch 0 taken 65285 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 65285 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 65285 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
130570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2161 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2162
3/8
✓ Branch 0 taken 47984 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47984 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 47984 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
95968 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2163 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2165 13966219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2167
3/8
✓ Branch 0 taken 746937 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 746937 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 746937 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1493874 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2168 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2169
3/8
✓ Branch 0 taken 511669 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 511669 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 511669 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1023338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2170 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2171 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2172 13879452 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2173 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2174
3/8
✓ Branch 0 taken 38134 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 38134 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 38134 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
76268 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2175 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2176
3/8
✓ Branch 0 taken 48633 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 48633 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 48633 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
97266 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2178 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2179 13323509 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2180 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2181
3/8
✓ Branch 0 taken 225307 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 225307 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 225307 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
450614 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2182 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2183
3/8
✓ Branch 0 taken 74649 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 74649 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 74649 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
149298 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2184 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2185
3/8
✓ Branch 0 taken 160804 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 160804 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 160804 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
321608 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2186 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2187
3/8
✓ Branch 0 taken 95183 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 95183 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 95183 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
190366 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2188 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2189 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2190 12945933 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2191 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2192
3/8
✓ Branch 0 taken 290112 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 290112 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 290112 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
580224 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2193 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2194
3/8
✓ Branch 0 taken 83402 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 83402 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 83402 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
166804 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2196 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2198
3/8
✓ Branch 0 taken 4062 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4062 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4062 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
8124 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2200 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2201 12842443 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2202 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2203
3/8
✓ Branch 0 taken 103490 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 103490 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 103490 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
206980 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2204 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2205 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2206 12838374 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2208
3/8
✓ Branch 0 taken 4069 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4069 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4069 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
8138 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2210 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2211 12830715 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2212 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2213
3/8
✓ Branch 0 taken 7659 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7659 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7659 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
15318 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2214 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2215 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2216 12686932 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2217 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2218
3/8
✓ Branch 0 taken 143783 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 143783 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 143783 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
287566 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2221 12557435 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2222 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2223
3/8
✓ Branch 0 taken 129497 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 129497 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 129497 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
258994 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2224 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2225 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2226 12408469 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2227 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2229 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2230 148966 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2231 148966 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2232 148966 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2233
2/6
✓ Branch 0 taken 148966 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 148966 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
148966 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2234 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2236 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2237 12259503 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2238 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2239
2/6
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2241 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2242 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2244 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2245 11226380 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2246 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2247
3/8
✓ Branch 0 taken 887082 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 887082 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 887082 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1774164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2248 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2249 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2250 71562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2251 71562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2252
3/10
✓ Branch 0 taken 71562 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 71562 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 71562 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
143124 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2253 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2254 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2255 20311 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2256 20311 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2257
3/10
✓ Branch 0 taken 20311 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 20311 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 20311 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
40622 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2258 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2259 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2260 4556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2261 4556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2262
3/10
✓ Branch 0 taken 4556 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4556 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4556 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
9112 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2263 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2264 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2265 6303 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2266 6303 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2267
3/10
✓ Branch 0 taken 6303 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6303 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 6303 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
12606 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2268 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2269 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2270 1008 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2271 1008 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2272
3/10
✓ Branch 0 taken 1008 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1008 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1008 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
2016 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2273 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2274 0, 0, 0, 0, 0
2275 8672 };
2276 8672
2277
3/10
✓ Branch 0 taken 8672 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8672 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8672 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
17344 /* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by
2278 0, pointed into by YYCONFLP. */
2279 static const short yyconfl[] =
2280 {
2281 0, 258, 0, 259, 0, 260, 0, 261, 0, 72,
2282 0, 229, 0
2283 };
2284
2285 5098
2286 5098 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2287
3/10
✓ Branch 0 taken 5098 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5098 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5098 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
10196 If N is 0, then set CURRENT to the empty location which ends
2288 the previous symbol: RHS[0] (always defined). */
2289
2290 #ifndef YYLLOC_DEFAULT
2291 8937 # define YYLLOC_DEFAULT(Current, Rhs, N) \
2292 8937 do \
2293
3/10
✓ Branch 0 taken 8937 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8937 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8937 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
17874 if (N) \
2294 { \
2295 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2296 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2297 1352 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2298 1352 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2299
3/10
✓ Branch 0 taken 1352 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1352 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1352 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
2704 } \
2300 else \
2301 { \
2302 18121 (Current).first_line = (Current).last_line = \
2303 18121 YYRHSLOC (Rhs, 0).last_line; \
2304
3/10
✓ Branch 0 taken 18121 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18121 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18121 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
36242 (Current).first_column = (Current).last_column = \
2305 YYRHSLOC (Rhs, 0).last_column; \
2306 } \
2307 120 while (0)
2308 120 #endif
2309
3/10
✓ Branch 0 taken 120 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 120 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 120 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
240
2310 # define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc)
2311
2312
2313 YYSTYPE yylval;
2314 YYLTYPE yylloc;
2315
2316 int yynerrs;
2317 11226380 int yychar;
2318
2319 enum { YYENOMEM = -2 };
2320
2321 1542787 typedef enum { yyok, yyaccept, yyabort, yyerr, yynomem } YYRESULTTAG;
2322 1542787
2323 1542787 #define YYCHK(YYE) \
2324 do { \
2325 YYRESULTTAG yychk_flag = YYE; \
2326 if (yychk_flag != yyok) \
2327 return yychk_flag; \
2328 414918 } while (0)
2329
2/6
✓ Branch 0 taken 414918 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 414918 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
414918
2330 /* YYINITDEPTH -- initial size of the parser's stacks. */
2331 #ifndef YYINITDEPTH
2332 # define YYINITDEPTH 200
2333 #endif
2334 2441
2335 2441 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2336
1/2
✓ Branch 0 taken 2441 times.
✗ Branch 1 not taken.
2441 if the built-in stack extension method is used).
2337
2338 Do not make this value too large; the results are undefined if
2339 SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem)
2340 evaluated with infinite-precision integer arithmetic. */
2341
2342 #ifndef YYMAXDEPTH
2343 # define YYMAXDEPTH 10000
2344 #endif
2345 2441
2346 2441 /* Minimum number of free items on the stack allowed after an
2347
2/6
✓ Branch 0 taken 2441 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2441 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2441 allocation. This is to allow allocation and initialization
2348 to be completed by functions that call yyexpandGLRStack before the
2349 stack is expanded, thus insuring that all necessary pointers get
2350 properly redirected to new data. */
2351 #define YYHEADROOM 2
2352
2353 #ifndef YYSTACKEXPANDABLE
2354 # define YYSTACKEXPANDABLE 1
2355 #endif
2356
2357 #if YYSTACKEXPANDABLE
2358 # define YY_RESERVE_GLRSTACK(Yystack) \
2359 do { \
2360 1 if (Yystack->yyspaceLeft < YYHEADROOM) \
2361 1 yyexpandGLRStack (Yystack); \
2362
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 } while (0)
2363 #else
2364 # define YY_RESERVE_GLRSTACK(Yystack) \
2365 do { \
2366 if (Yystack->yyspaceLeft < YYHEADROOM) \
2367 yyMemoryExhausted (Yystack); \
2368 } while (0)
2369 #endif
2370
2371 /** State numbers. */
2372 typedef int yy_state_t;
2373
2374 /** Rule numbers. */
2375 typedef int yyRuleNum;
2376
2377 /** Item references. */
2378 typedef short yyItemNum;
2379
2380 typedef struct yyGLRState yyGLRState;
2381 typedef struct yyGLRStateSet yyGLRStateSet;
2382 typedef struct yySemanticOption yySemanticOption;
2383 typedef union yyGLRStackItem yyGLRStackItem;
2384 typedef struct yyGLRStack yyGLRStack;
2385
2386 struct yyGLRState
2387 {
2388 /** Type tag: always true. */
2389 yybool yyisState;
2390 /** Type tag for yysemantics. If true, yyval applies, otherwise
2391 * yyfirstVal applies. */
2392 yybool yyresolved;
2393 /** Number of corresponding LALR(1) machine state. */
2394 yy_state_t yylrState;
2395 4223670 /** Preceding state in this stack */
2396
2/6
✓ Branch 0 taken 4223670 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4223670 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4223670 yyGLRState* yypred;
2397 /** Source position of the last token produced by my symbol */
2398 50901 YYPTRDIFF_T yyposn;
2399
2/6
✓ Branch 0 taken 50901 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 50901 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
50901 union {
2400 /** First in a chain of alternative reductions producing the
2401 194102 * nonterminal corresponding to this state, threaded through
2402
4/10
✓ Branch 0 taken 194102 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 194102 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 194102 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 194102 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
194102 * yynext. */
2403 yySemanticOption* yyfirstVal;
2404 89238 /** Semantic value for this state. */
2405 302108 YYSTYPE yyval;
2406 6914 } yysemantics;
2407 /** Source location for this state. */
2408 9744 YYLTYPE yyloc;
2409
3/8
✓ Branch 0 taken 9744 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9744 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 9744 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
9744 };
2410
2411 struct yyGLRStateSet
2412 {
2413 yyGLRState** yystates;
2414 /** During nondeterministic operation, yylookaheadNeeds tracks which
2415 * stacks have actually needed the current lookahead. During deterministic
2416 * operation, yylookaheadNeeds[0] is not maintained since it would merely
2417 * duplicate yychar != TOK_YYEMPTY. */
2418 yybool* yylookaheadNeeds;
2419 3 YYPTRDIFF_T yysize;
2420 3 YYPTRDIFF_T yycapacity;
2421 3 };
2422
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
3
2423 3 struct yySemanticOption
2424 107937 {
2425 /** Type tag: always false. */
2426 yybool yyisState;
2427 /** Rule number for this reduction */
2428 yyRuleNum yyrule;
2429 89238 /** The last RHS state in the list of states to be reduced. */
2430
2/4
✓ Branch 0 taken 89238 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 89238 times.
89238 yyGLRState* yystate;
2431 /** The lookahead for this reduction. */
2432 int yyrawchar;
2433 YYSTYPE yyval;
2434 YYLTYPE yyloc;
2435 /** Next sibling in chain of options. To facilitate merging,
2436 * options are chained in decreasing order by address. */
2437
2/6
✓ Branch 0 taken 155013 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 155013 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
155013 yySemanticOption* yynext;
2438
2/6
✓ Branch 0 taken 147095 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 147095 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
147095 };
2439
2440 /** Type of the items in the GLR stack. The yyisState field
2441 * indicates which item of the union is valid. */
2442 union yyGLRStackItem {
2443 yyGLRState yystate;
2444 yySemanticOption yyoption;
2445 };
2446
2447 struct yyGLRStack {
2448 int yyerrState;
2449 /* To compute the location of the error token. */
2450 yyGLRStackItem yyerror_range[3];
2451
2452 YYJMP_BUF yyexception_buffer;
2453 yyGLRStackItem* yyitems;
2454 yyGLRStackItem* yynextFree;
2455 YYPTRDIFF_T yyspaceLeft;
2456 yyGLRState* yysplitPoint;
2457 yyGLRState* yylastDeleted;
2458 yyGLRStateSet yytops;
2459 };
2460
2461 #if YYSTACKEXPANDABLE
2462 static void yyexpandGLRStack (yyGLRStack* yystackp);
2463 #endif
2464
2465 _Noreturn static void
2466 57 yyFail (yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root, const char* yymsg)
2467 6914 {
2468
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
6971 if (yymsg != YY_NULLPTR)
2469 6914 yyerror (root, yymsg);
2470 57 YYLONGJMP (yystackp->yyexception_buffer, 1);
2471 }
2472
2473 _Noreturn static void
2474 43786 yyMemoryExhausted (yyGLRStack* yystackp)
2475 43786 {
2476 43786 YYLONGJMP (yystackp->yyexception_buffer, 2);
2477 43786 }
2478
2479 6914 /** Accessing symbol of state YYSTATE. */
2480
2/6
✓ Branch 0 taken 6914 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6914 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6914 static inline yysymbol_kind_t
2481 111433 yy_accessing_symbol (yy_state_t yystate)
2482 {
2483 111433 return YY_CAST (yysymbol_kind_t, yystos[yystate]);
2484 }
2485
2486 #if 1
2487 /* The user-facing name of the symbol whose (internal) number is
2488 YYSYMBOL. No bounds checking. */
2489 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2490
2491 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
2492 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
2493 static const char *const yytname[] =
2494 {
2495 "\"end of file\"", "error", "\"invalid token\"", "SCRIPT", "ZCLASS",
2496 "FOR", "LOOP", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT", "RETURN",
2497 "IMPORT", "ZTRUE", "ZFALSE", "WHILE", "BREAK", "CONTINUE", "ZCONST",
2498 "DO", "TYPEDEF", "EXPECTERROR", "OPTIONVALUE", "ISINCLUDED", "DEFINE",
2499 "ENUM", "NAMESPACE", "USING", "ALWAYS", "ZASM", "INCLUDE", "INCLUDEPATH",
2500 "INCLUDEIF", "UNTIL", "UNLESS", "REPEAT", "INLINE", "INTERNAL", "STATIC",
2501 "CONSTEXPR", "NEW", "DELETE", "CASSERT", "ZAUTO", "ZVOID", "UNTYPED",
2502 "ZBOOL", "ZFLOAT", "ZCHAR", "ZLONG", "ZRGB", "COMMA", "DOT", "SEMICOLON",
2503 "SCOPERES", "COLON", "IN", "LPAREN", "RPAREN", "EMPTYBRACKETS",
2504 "LBRACKET", "RBRACKET", "LBRACE", "RBRACE", "QMARK", "ARROW",
2505 "INCREMENT", "DECREMENT", "NOT", "BITNOT", "EXPN", "TIMES", "DIVIDE",
2506 "MODULO", "PLUS", "MINUS", "LSHIFT", "RSHIFT", "LE", "LT", "GE", "GT",
2507 "EQ", "NE", "BITAND", "BITXOR", "BITOR", "AND", "OR", "XOR", "ASSIGN",
2508 "PLUSASSIGN", "MINUSASSIGN", "TIMESASSIGN", "DIVIDEASSIGN",
2509 "MODULOASSIGN", "LSHIFTASSIGN", "RSHIFTASSIGN", "BITANDASSIGN",
2510 "BITXORASSIGN", "BITORASSIGN", "ANDASSIGN", "ORASSIGN", "CAST", "RANGE",
2511 "RANGE_L", "RANGE_R", "RANGE_LR", "RANGE_N", "APPXEQUAL", "DOUBLEBANG",
2512 "PERCENT", "BITNOTASSIGN", "INVMOD", "DOUBLEADDR", "DOUBLESTAR",
2513 "HANDLE", "HANDLETOHANDLE", "ADDR", "HASH", "ENDLINE", "OPTION",
2514 "INHERIT", "IDENTIFIER", "QUOTEDSTRING", "CASESTRING", "IMPORTSTRING",
2515 "SINGLECHAR", "NUMBER", "LONGNUMBER", "$accept", "Init", "Global_List",
2516 "Global_Statement", "Trail_Comma_RBrace", "Namespace",
2517 "Namespace_Block_List", "Namespace_Statement", "Using", "AlwaysUsing",
2518 "Import", "IncludePath", "Option", "Statement_Assert", "DataTypeDef",
2519 "StandardDataTypedef", "DataType", "DataType_Mods", "DataType_Base",
2520 "ScriptTypeDef", "Data", "Data_List", "Data_Element",
2521 "Data_Element_Array_List", "Single_Data_req_assign",
2522 "Data_Element_Array_Element", "Data_Element_Array_Element_Size_List",
2523 "Function", "Function_Typeless", "Function_Heading",
2524 "FunctionTemplateList", "Function_Parameters_List",
2525 "Function_Parameters_Element", "Function_OptParams_List",
2526 "Function_VarArg_Element", "Class_Ident", "Class", "Class_Block",
2527 "Class_Block_List", "Class_Constructor", "Class_Destructor",
2528 "Class_Data", "Class_Block_Element", "Annotated_Script", "Script",
2529 "Script_Type", "Script_Block", "Script_Block_List",
2530 "Script_Block_Element", "Annotation_List", "Annotation",
2531 "Block_Statement", "Statement", "Statement_NoSemicolon",
2532 "Statement_Block", "Statement_Block_List", "Statement_If", "If_Body",
2533 "Statement_Switch", "Statement_Switch_Body", "Statement_Switch_Cases",
2534 "Statement_For", "Statement_CommaList", "Statement_For_Standard",
2535 "Statement_For_Each", "Annotated_Loop", "Statement_Loop",
2536 "Statement_Loop_Inf", "Statement_Loop_Range",
2537 "Statement_Loop_Range_Base", "Token_In", "Statement_While",
2538 "Statement_Do", "Statement_Repeat", "Statement_Return",
2539 "Statement_CompileError", "Annotated_Enum", "DataEnum", "Enum_Block",
2540 "ScopeRes", "Identifier_List", "Scoperes_Identifier_List",
2541 "Mixed_Identifier_List", "idlist_scopres", "idlist_dot",
2542 "Ambigious_Iden_List", "Identifier", "Func_Left", "Function_Call",
2543 "Function_Call_Parameters", "Expr_1", "Expr_2", "Expr_Arrow", "Expr_3",
2544 "Expr_4", "Expr_5", "Expr_6", "Expr_7", "Expr_8", "Expr_9", "Expr_10",
2545 "Expr_11", "Expr_12", "Expr_13", "Expr_14", "Expr_15", "Expr_16",
2546 "Expr_17", "Expr_18", "Expression", "Statement_Expression",
2547 "Expression_Constant", "Expression_Const_Range", "Expression_Range",
2548 "Literal", "QuotedString", "Literal_String", "Literal_Bool",
2549 "Literal_Array", "Literal_Array_Body", YY_NULLPTR
2550 };
2551
2552 static const char *
2553 yysymbol_name (yysymbol_kind_t yysymbol)
2554 {
2555 return yytname[yysymbol];
2556 }
2557 #endif
2558
2559 /** Left-hand-side symbol for rule #YYRULE. */
2560 static inline yysymbol_kind_t
2561 396284610 yylhsNonterm (yyRuleNum yyrule)
2562 {
2563 396284610 return YY_CAST (yysymbol_kind_t, yyr1[yyrule]);
2564 }
2565
2566 #if YYDEBUG
2567
2568 # ifndef YYFPRINTF
2569 # define YYFPRINTF fprintf
2570 # endif
2571
2572 # define YY_FPRINTF \
2573 YY_IGNORE_USELESS_CAST_BEGIN YY_FPRINTF_
2574
2575 # define YY_FPRINTF_(Args) \
2576 do { \
2577 YYFPRINTF Args; \
2578 YY_IGNORE_USELESS_CAST_END \
2579 } while (0)
2580
2581 # define YY_DPRINTF \
2582 YY_IGNORE_USELESS_CAST_BEGIN YY_DPRINTF_
2583
2584 # define YY_DPRINTF_(Args) \
2585 do { \
2586 if (yydebug) \
2587 YYFPRINTF Args; \
2588 YY_IGNORE_USELESS_CAST_END \
2589 } while (0)
2590
2591
2592 /* YYLOCATION_PRINT -- Print the location on the stream.
2593 This macro was not mandated originally: define only if we know
2594 we won't break user code: when these are the locations we know. */
2595
2596 # ifndef YYLOCATION_PRINT
2597
2598 # if defined YY_LOCATION_PRINT
2599
2600 /* Temporary convenience wrapper in case some people defined the
2601 undocumented and private YY_LOCATION_PRINT macros. */
2602 # define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
2603
2604 # elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
2605
2606 /* Print *YYLOCP on YYO. Private, do not rely on its existence. */
2607
2608 YY_ATTRIBUTE_UNUSED
2609 static int
2610 yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
2611 {
2612 int res = 0;
2613 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
2614 if (0 <= yylocp->first_line)
2615 {
2616 res += YYFPRINTF (yyo, "%d", yylocp->first_line);
2617 if (0 <= yylocp->first_column)
2618 res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
2619 }
2620 if (0 <= yylocp->last_line)
2621 {
2622 if (yylocp->first_line < yylocp->last_line)
2623 {
2624 res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
2625 if (0 <= end_col)
2626 res += YYFPRINTF (yyo, ".%d", end_col);
2627 }
2628 else if (0 <= end_col && yylocp->first_column < end_col)
2629 res += YYFPRINTF (yyo, "-%d", end_col);
2630 }
2631 return res;
2632 }
2633
2634 # define YYLOCATION_PRINT yy_location_print_
2635
2636 /* Temporary convenience wrapper in case some people defined the
2637 undocumented and private YY_LOCATION_PRINT macros. */
2638 # define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
2639
2640 # else
2641
2642 # define YYLOCATION_PRINT(File, Loc) ((void) 0)
2643 /* Temporary convenience wrapper in case some people defined the
2644 undocumented and private YY_LOCATION_PRINT macros. */
2645 # define YY_LOCATION_PRINT YYLOCATION_PRINT
2646
2647 # endif
2648 # endif /* !defined YYLOCATION_PRINT */
2649
2650
2651
2652 /*-----------------------------------.
2653 | Print this symbol's value on YYO. |
2654 `-----------------------------------*/
2655
2656 static void
2657 yy_symbol_value_print (FILE *yyo,
2658 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, std::shared_ptr<ZScript::ASTFile>& root)
2659 {
2660 FILE *yyoutput = yyo;
2661 YY_USE (yyoutput);
2662 YY_USE (yylocationp);
2663 YY_USE (root);
2664 if (!yyvaluep)
2665 return;
2666 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2667 YY_USE (yykind);
2668 YY_IGNORE_MAYBE_UNINITIALIZED_END
2669 }
2670
2671
2672 /*---------------------------.
2673 | Print this symbol on YYO. |
2674 `---------------------------*/
2675
2676 static void
2677 yy_symbol_print (FILE *yyo,
2678 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, std::shared_ptr<ZScript::ASTFile>& root)
2679 {
2680 YYFPRINTF (yyo, "%s %s (",
2681 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
2682
2683 YYLOCATION_PRINT (yyo, yylocationp);
2684 YYFPRINTF (yyo, ": ");
2685 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, root);
2686 YYFPRINTF (yyo, ")");
2687 }
2688
2689 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
2690 do { \
2691 if (yydebug) \
2692 { \
2693 YY_FPRINTF ((stderr, "%s ", Title)); \
2694 yy_symbol_print (stderr, Kind, Value, Location, root); \
2695 YY_FPRINTF ((stderr, "\n")); \
2696 } \
2697 } while (0)
2698
2699 static inline void
2700 yy_reduce_print (yybool yynormal, yyGLRStackItem* yyvsp, YYPTRDIFF_T yyk,
2701 yyRuleNum yyrule, std::shared_ptr<ZScript::ASTFile>& root);
2702
2703 # define YY_REDUCE_PRINT(Args) \
2704 do { \
2705 if (yydebug) \
2706 yy_reduce_print Args; \
2707 } while (0)
2708
2709 /* Nonzero means print parse trace. It is left uninitialized so that
2710 multiple parsers can coexist. */
2711 int yydebug;
2712
2713 static void yypstack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
2714 YY_ATTRIBUTE_UNUSED;
2715 static void yypdumpstack (yyGLRStack* yystackp)
2716 YY_ATTRIBUTE_UNUSED;
2717
2718 #else /* !YYDEBUG */
2719
2720 # define YY_DPRINTF(Args) do {} while (yyfalse)
2721 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
2722 # define YY_REDUCE_PRINT(Args)
2723
2724 #endif /* !YYDEBUG */
2725
2726 #ifndef yystrlen
2727 # define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
2728 #endif
2729
2730 #ifndef yystpcpy
2731 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2732 # define yystpcpy stpcpy
2733 # else
2734 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2735 YYDEST. */
2736 static char *
2737 yystpcpy (char *yydest, const char *yysrc)
2738 {
2739 char *yyd = yydest;
2740 const char *yys = yysrc;
2741
2742 while ((*yyd++ = *yys++) != '\0')
2743 continue;
2744
2745 return yyd - 1;
2746 }
2747 # endif
2748 #endif
2749
2750 #ifndef yytnamerr
2751 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2752 quotes and backslashes, so that it's suitable for yyerror. The
2753 heuristic is that double-quoting is unnecessary unless the string
2754 contains an apostrophe, a comma, or backslash (other than
2755 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2756 null, do not copy; instead, return the length of what the result
2757 would have been. */
2758 static YYPTRDIFF_T
2759 312 yytnamerr (char *yyres, const char *yystr)
2760 {
2761
2/2
✓ Branch 0 taken 308 times.
✓ Branch 1 taken 4 times.
312 if (*yystr == '"')
2762 {
2763 4 YYPTRDIFF_T yyn = 0;
2764 4 char const *yyp = yystr;
2765
2766 48 for (;;)
2767
2/4
✓ Branch 0 taken 44 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
48 switch (*++yyp)
2768 {
2769 case '\'':
2770 case ',':
2771 goto do_not_strip_quotes;
2772
2773 case '\\':
2774 if (*++yyp != '\\')
2775 goto do_not_strip_quotes;
2776 else
2777 goto append;
2778
2779 append:
2780 default:
2781
2/2
✓ Branch 0 taken 22 times.
✓ Branch 1 taken 22 times.
44 if (yyres)
2782 22 yyres[yyn] = *yyp;
2783 44 yyn++;
2784 44 break;
2785
2786 case '"':
2787
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
4 if (yyres)
2788 2 yyres[yyn] = '\0';
2789 4 return yyn;
2790 }
2791 do_not_strip_quotes: ;
2792 }
2793
2794
2/2
✓ Branch 0 taken 154 times.
✓ Branch 1 taken 154 times.
308 if (yyres)
2795 154 return yystpcpy (yyres, yystr) - yyres;
2796 else
2797 154 return yystrlen (yystr);
2798 312 }
2799 #endif
2800
2801
2802 /** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting
2803 * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred
2804 * containing the pointer to the next state in the chain. */
2805 static void yyfillin (yyGLRStackItem *, int, int) YY_ATTRIBUTE_UNUSED;
2806 static void
2807 yyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1)
2808 {
2809 int i;
2810 yyGLRState *s = yyvsp[yylow0].yystate.yypred;
2811 for (i = yylow0-1; i >= yylow1; i -= 1)
2812 {
2813 #if YYDEBUG
2814 yyvsp[i].yystate.yylrState = s->yylrState;
2815 #endif
2816 yyvsp[i].yystate.yyresolved = s->yyresolved;
2817 if (s->yyresolved)
2818 yyvsp[i].yystate.yysemantics.yyval = s->yysemantics.yyval;
2819 else
2820 /* The effect of using yyval or yyloc (in an immediate rule) is
2821 * undefined. */
2822 yyvsp[i].yystate.yysemantics.yyfirstVal = YY_NULLPTR;
2823 yyvsp[i].yystate.yyloc = s->yyloc;
2824 s = yyvsp[i].yystate.yypred = s->yypred;
2825 }
2826 }
2827
2828
2829 /** If yychar is empty, fetch the next token. */
2830 static inline yysymbol_kind_t
2831 286483045 yygetToken (int *yycharp, std::shared_ptr<ZScript::ASTFile>& root)
2832 {
2833 yysymbol_kind_t yytoken;
2834 286483045 YY_USE (root);
2835
2/2
✓ Branch 0 taken 210707018 times.
✓ Branch 1 taken 75776027 times.
286483045 if (*yycharp == TOK_YYEMPTY)
2836 {
2837 75776027 YY_DPRINTF ((stderr, "Reading a token\n"));
2838 75776027 *yycharp = yylex ();
2839 75776027 }
2840
2/2
✓ Branch 0 taken 110999 times.
✓ Branch 1 taken 286372046 times.
286483045 if (*yycharp <= TOK_YYEOF)
2841 {
2842 110999 *yycharp = TOK_YYEOF;
2843 110999 yytoken = YYSYMBOL_YYEOF;
2844 110999 YY_DPRINTF ((stderr, "Now at end of input.\n"));
2845 110999 }
2846 else
2847 {
2848
2/4
✓ Branch 0 taken 286372046 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 286372046 times.
✗ Branch 3 not taken.
286372046 yytoken = YYTRANSLATE (*yycharp);
2849 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2850 }
2851 286483045 return yytoken;
2852 }
2853
2854 /* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in
2855 * YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1.
2856 * For convenience, always return YYLOW1. */
2857 static inline int yyfill (yyGLRStackItem *, int *, int, yybool)
2858 YY_ATTRIBUTE_UNUSED;
2859 static inline int
2860 818456047 yyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal)
2861 {
2862
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 818456047 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
818456047 if (!yynormal && yylow1 < *yylow)
2863 {
2864 yyfillin (yyvsp, *yylow, yylow1);
2865 *yylow = yylow1;
2866 }
2867 818456047 return yylow1;
2868 }
2869
2870 /** Perform user action for rule number YYN, with RHS length YYRHSLEN,
2871 * and top stack item YYVSP. YYLVALP points to place to put semantic
2872 * value ($$), and yylocp points to place for location information
2873 * (@$). Returns yyok for normal return, yyaccept for YYACCEPT,
2874 * yyerr for YYERROR, yyabort for YYABORT, yynomem for YYNOMEM. */
2875 static YYRESULTTAG
2876 396260626 yyuserAction (yyRuleNum yyrule, int yyrhslen, yyGLRStackItem* yyvsp,
2877 yyGLRStack* yystackp, YYPTRDIFF_T yyk,
2878 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::shared_ptr<ZScript::ASTFile>& root)
2879 {
2880 396260626 const yybool yynormal YY_ATTRIBUTE_UNUSED = yystackp->yysplitPoint == YY_NULLPTR;
2881 396260626 int yylow = 1;
2882 YY_USE (yyvalp);
2883 YY_USE (yylocp);
2884 396260626 YY_USE (root);
2885 YY_USE (yyk);
2886 YY_USE (yyrhslen);
2887 # undef yyerrok
2888 # define yyerrok (yystackp->yyerrState = 0)
2889 # undef YYACCEPT
2890 # define YYACCEPT return yyaccept
2891 # undef YYABORT
2892 # define YYABORT return yyabort
2893 # undef YYNOMEM
2894 # define YYNOMEM return yynomem
2895 # undef YYERROR
2896 # define YYERROR return yyerrok, yyerr
2897 # undef YYRECOVERING
2898 # define YYRECOVERING() (yystackp->yyerrState != 0)
2899 # undef yyclearin
2900 # define yyclearin (yychar = TOK_YYEMPTY)
2901 # undef YYFILL
2902 # define YYFILL(N) yyfill (yyvsp, &yylow, (N), yynormal)
2903 # undef YYBACKUP
2904 # define YYBACKUP(Token, Value) \
2905 return yyerror (root, YY_("syntax error: cannot back up")), \
2906 yyerrok, yyerr
2907
2908
2/2
✓ Branch 0 taken 396002184 times.
✓ Branch 1 taken 258442 times.
396260626 if (yyrhslen == 0)
2909 258442 *yyvalp = yyval_default;
2910 else
2911 396002184 *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yyval;
2912 /* Default location. */
2913
2/2
✓ Branch 0 taken 396002184 times.
✓ Branch 1 taken 258442 times.
396260626 YYLLOC_DEFAULT ((*yylocp), (yyvsp - yyrhslen), yyrhslen);
2914 396260626 yystackp->yyerror_range[1].yystate.yyloc = *yylocp;
2915 /* If yyk == -1, we are running a deferred action on a temporary
2916 stack. In that case, YY_REDUCE_PRINT must not play with YYFILL,
2917 so pretend the stack is "normal". */
2918 YY_REDUCE_PRINT ((yynormal || yyk == -1, yyvsp, yyk, yyrule, root));
2919
284/382
✓ Branch 0 taken 1711983 times.
✓ Branch 1 taken 1842 times.
✓ Branch 2 taken 652756 times.
✓ Branch 3 taken 777776 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 29456 times.
✓ Branch 6 taken 32274 times.
✓ Branch 7 taken 6 times.
✓ Branch 8 taken 2507 times.
✓ Branch 9 taken 2851788 times.
✓ Branch 10 taken 2521799 times.
✓ Branch 11 taken 15120 times.
✓ Branch 12 taken 1303302 times.
✓ Branch 13 taken 189241 times.
✓ Branch 14 taken 35320 times.
✓ Branch 15 taken 1490331 times.
✓ Branch 16 taken 488957 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 3452 times.
✓ Branch 20 taken 939 times.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 728104 times.
✓ Branch 24 taken 40840 times.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 15 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 55500 times.
✓ Branch 32 taken 4073 times.
✓ Branch 33 taken 55556 times.
✓ Branch 34 taken 65907 times.
✓ Branch 35 taken 3328 times.
✓ Branch 36 taken 9788 times.
✓ Branch 37 taken 2520 times.
✓ Branch 38 taken 3384 times.
✓ Branch 39 taken 14 times.
✓ Branch 40 taken 35314 times.
✓ Branch 41 taken 159348 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 6 times.
✗ Branch 44 not taken.
✓ Branch 45 taken 51979 times.
✓ Branch 46 taken 115134 times.
✗ Branch 47 not taken.
✓ Branch 48 taken 4141 times.
✓ Branch 49 taken 1 times.
✓ Branch 50 taken 4138 times.
✓ Branch 51 taken 3 times.
✓ Branch 52 taken 813 times.
✓ Branch 53 taken 39 times.
✗ Branch 54 not taken.
✓ Branch 55 taken 370 times.
✓ Branch 56 taken 28 times.
✓ Branch 57 taken 27 times.
✓ Branch 58 taken 31 times.
✓ Branch 59 taken 1 times.
✓ Branch 60 taken 5 times.
✗ Branch 61 not taken.
✓ Branch 62 taken 8 times.
✗ Branch 63 not taken.
✓ Branch 64 taken 39813 times.
✓ Branch 65 taken 26094 times.
✗ Branch 66 not taken.
✓ Branch 67 taken 1842 times.
✓ Branch 68 taken 8958 times.
✗ Branch 69 not taken.
✓ Branch 70 taken 2 times.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✓ Branch 74 taken 4 times.
✓ Branch 75 taken 9 times.
✓ Branch 76 taken 9827 times.
✓ Branch 77 taken 9827 times.
✓ Branch 78 taken 265256 times.
✓ Branch 79 taken 6587393 times.
✓ Branch 80 taken 506592 times.
✓ Branch 81 taken 6080801 times.
✓ Branch 82 taken 52 times.
✓ Branch 83 taken 460641 times.
✓ Branch 84 taken 95891 times.
✓ Branch 85 taken 643953 times.
✓ Branch 86 taken 3848433 times.
✓ Branch 87 taken 484197 times.
✓ Branch 88 taken 36090 times.
✓ Branch 89 taken 10086 times.
✓ Branch 90 taken 1008050 times.
✓ Branch 91 taken 2520 times.
✓ Branch 92 taken 1014692 times.
✓ Branch 93 taken 2286698 times.
✓ Branch 94 taken 2286698 times.
✓ Branch 95 taken 287284 times.
✓ Branch 96 taken 5373587 times.
✓ Branch 97 taken 15 times.
✓ Branch 98 taken 28422 times.
✓ Branch 99 taken 258862 times.
✗ Branch 100 not taken.
✓ Branch 101 taken 28422 times.
✗ Branch 102 not taken.
✗ Branch 103 not taken.
✓ Branch 104 taken 578760 times.
✓ Branch 105 taken 724570 times.
✓ Branch 106 taken 614880 times.
✓ Branch 107 taken 1 times.
✓ Branch 108 taken 1311972 times.
✓ Branch 109 taken 27530 times.
✓ Branch 110 taken 27530 times.
✓ Branch 111 taken 1624 times.
✓ Branch 112 taken 1646697 times.
✓ Branch 113 taken 1017757 times.
✓ Branch 114 taken 125741 times.
✓ Branch 115 taken 812 times.
✓ Branch 116 taken 195192 times.
✓ Branch 117 taken 2980251 times.
✓ Branch 118 taken 125741 times.
✓ Branch 119 taken 812 times.
✓ Branch 120 taken 35320 times.
✓ Branch 121 taken 35305 times.
✓ Branch 122 taken 15 times.
✗ Branch 123 not taken.
✓ Branch 124 taken 861 times.
✓ Branch 125 taken 6 times.
✓ Branch 126 taken 23 times.
✗ Branch 127 not taken.
✓ Branch 128 taken 35282 times.
✗ Branch 129 not taken.
✓ Branch 130 taken 36120 times.
✓ Branch 131 taken 36143 times.
✓ Branch 132 taken 6 times.
✓ Branch 133 taken 1001397 times.
✓ Branch 134 taken 1001397 times.
✗ Branch 135 not taken.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✓ Branch 138 taken 41 times.
✓ Branch 139 taken 3453 times.
✓ Branch 140 taken 5981 times.
✓ Branch 141 taken 1 times.
✗ Branch 142 not taken.
✓ Branch 143 taken 3453 times.
✗ Branch 144 not taken.
✓ Branch 145 taken 84 times.
✓ Branch 146 taken 4295 times.
✗ Branch 147 not taken.
✓ Branch 148 taken 4 times.
✓ Branch 149 taken 7 times.
✓ Branch 150 taken 163 times.
✓ Branch 151 taken 18529 times.
✓ Branch 152 taken 18690 times.
✓ Branch 153 taken 2 times.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✗ Branch 156 not taken.
✗ Branch 157 not taken.
✓ Branch 158 taken 1089508 times.
✓ Branch 159 taken 500979 times.
✗ Branch 160 not taken.
✓ Branch 161 taken 816 times.
✗ Branch 162 not taken.
✓ Branch 163 taken 1381336 times.
✓ Branch 164 taken 434666 times.
✓ Branch 165 taken 150140 times.
✓ Branch 166 taken 6323 times.
✓ Branch 167 taken 590 times.
✗ Branch 168 not taken.
✓ Branch 169 taken 1123109 times.
✓ Branch 170 taken 98277 times.
✗ Branch 171 not taken.
✓ Branch 172 taken 21950 times.
✗ Branch 173 not taken.
✓ Branch 174 taken 8044 times.
✓ Branch 175 taken 131112 times.
✗ Branch 176 not taken.
✓ Branch 177 taken 161450 times.
✗ Branch 178 not taken.
✗ Branch 179 not taken.
✗ Branch 180 not taken.
✗ Branch 181 not taken.
✗ Branch 182 not taken.
✗ Branch 183 not taken.
✗ Branch 184 not taken.
✗ Branch 185 not taken.
✗ Branch 186 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
✗ Branch 189 not taken.
✓ Branch 190 taken 7694 times.
✗ Branch 191 not taken.
✓ Branch 192 taken 1159033 times.
✓ Branch 193 taken 203 times.
✓ Branch 194 taken 1864445 times.
✗ Branch 195 not taken.
✓ Branch 196 taken 1541222 times.
✓ Branch 197 taken 4883 times.
✓ Branch 198 taken 685923 times.
✓ Branch 199 taken 42181 times.
✓ Branch 200 taken 15 times.
✗ Branch 201 not taken.
✓ Branch 202 taken 523741 times.
✓ Branch 203 taken 204348 times.
✓ Branch 204 taken 40840 times.
✓ Branch 205 taken 346184 times.
✓ Branch 206 taken 40840 times.
✓ Branch 207 taken 21459 times.
✓ Branch 208 taken 1627 times.
✓ Branch 209 taken 817 times.
✗ Branch 210 not taken.
✓ Branch 211 taken 356065 times.
✓ Branch 212 taken 1624 times.
✗ Branch 213 not taken.
✓ Branch 214 taken 29335 times.
✓ Branch 215 taken 150125 times.
✗ Branch 216 not taken.
✓ Branch 217 taken 150128 times.
✓ Branch 218 taken 150124 times.
✓ Branch 219 taken 1 times.
✓ Branch 220 taken 15 times.
✗ Branch 221 not taken.
✗ Branch 222 not taken.
✓ Branch 223 taken 1 times.
✗ Branch 224 not taken.
✓ Branch 225 taken 1 times.
✗ Branch 226 not taken.
✗ Branch 227 not taken.
✓ Branch 228 taken 1 times.
✗ Branch 229 not taken.
✓ Branch 230 taken 1 times.
✗ Branch 231 not taken.
✗ Branch 232 not taken.
✗ Branch 233 not taken.
✗ Branch 234 not taken.
✓ Branch 235 taken 16 times.
✗ Branch 236 not taken.
✓ Branch 237 taken 6318 times.
✗ Branch 238 not taken.
✓ Branch 239 taken 5 times.
✗ Branch 240 not taken.
✓ Branch 241 taken 584 times.
✗ Branch 242 not taken.
✓ Branch 243 taken 6 times.
✗ Branch 244 not taken.
✗ Branch 245 not taken.
✓ Branch 246 taken 1086114 times.
✓ Branch 247 taken 36996 times.
✗ Branch 248 not taken.
✓ Branch 249 taken 18487 times.
✓ Branch 250 taken 141712 times.
✓ Branch 251 taken 40278 times.
✓ Branch 252 taken 1 times.
✓ Branch 253 taken 119920 times.
✓ Branch 254 taken 2924183 times.
✓ Branch 255 taken 160199 times.
✓ Branch 256 taken 1064 times.
✗ Branch 257 not taken.
✓ Branch 258 taken 1061 times.
✓ Branch 259 taken 15 times.
✓ Branch 260 taken 11945614 times.
✓ Branch 261 taken 3 times.
✓ Branch 262 taken 4146 times.
✗ Branch 263 not taken.
✗ Branch 264 not taken.
✗ Branch 265 not taken.
✗ Branch 266 not taken.
✗ Branch 267 not taken.
✓ Branch 268 taken 1064 times.
✗ Branch 269 not taken.
✗ Branch 270 not taken.
✓ Branch 271 taken 15 times.
✓ Branch 272 taken 11950839 times.
✓ Branch 273 taken 20334940 times.
✓ Branch 274 taken 204250 times.
✓ Branch 275 taken 1164039 times.
✓ Branch 276 taken 72 times.
✓ Branch 277 taken 40 times.
✓ Branch 278 taken 71055 times.
✓ Branch 279 taken 1297233 times.
✓ Branch 280 taken 1157030 times.
✓ Branch 281 taken 1297274 times.
✓ Branch 282 taken 8434985 times.
✓ Branch 283 taken 4876677 times.
✓ Branch 284 taken 1024345 times.
✓ Branch 285 taken 14336007 times.
✓ Branch 286 taken 7201 times.
✓ Branch 287 taken 2559881 times.
✓ Branch 288 taken 14336007 times.
✓ Branch 289 taken 43424 times.
✓ Branch 290 taken 16976 times.
✓ Branch 291 taken 1368400 times.
✓ Branch 292 taken 555545 times.
✓ Branch 293 taken 2355631 times.
✓ Branch 294 taken 15500157 times.
✓ Branch 295 taken 93567 times.
✓ Branch 296 taken 42757 times.
✓ Branch 297 taken 262413 times.
✓ Branch 298 taken 49529 times.
✓ Branch 299 taken 6944 times.
✓ Branch 300 taken 15500157 times.
✗ Branch 301 not taken.
✓ Branch 302 taken 15224825 times.
✓ Branch 303 taken 162063 times.
✓ Branch 304 taken 65285 times.
✓ Branch 305 taken 47984 times.
✓ Branch 306 taken 13966219 times.
✓ Branch 307 taken 746937 times.
✓ Branch 308 taken 511669 times.
✓ Branch 309 taken 13879452 times.
✓ Branch 310 taken 38134 times.
✓ Branch 311 taken 48633 times.
✓ Branch 312 taken 13323509 times.
✓ Branch 313 taken 225307 times.
✓ Branch 314 taken 74649 times.
✓ Branch 315 taken 160804 times.
✓ Branch 316 taken 95183 times.
✓ Branch 317 taken 12945933 times.
✓ Branch 318 taken 290112 times.
✓ Branch 319 taken 83402 times.
✗ Branch 320 not taken.
✓ Branch 321 taken 4062 times.
✓ Branch 322 taken 12842443 times.
✓ Branch 323 taken 103490 times.
✓ Branch 324 taken 12838374 times.
✓ Branch 325 taken 4069 times.
✓ Branch 326 taken 12830715 times.
✓ Branch 327 taken 7659 times.
✓ Branch 328 taken 12686932 times.
✓ Branch 329 taken 143783 times.
✓ Branch 330 taken 12557435 times.
✓ Branch 331 taken 129497 times.
✓ Branch 332 taken 12408469 times.
✓ Branch 333 taken 148966 times.
✓ Branch 334 taken 12259503 times.
✓ Branch 335 taken 4 times.
✓ Branch 336 taken 11226380 times.
✓ Branch 337 taken 887082 times.
✓ Branch 338 taken 71562 times.
✓ Branch 339 taken 20311 times.
✓ Branch 340 taken 4556 times.
✓ Branch 341 taken 6303 times.
✓ Branch 342 taken 1008 times.
✓ Branch 343 taken 8672 times.
✗ Branch 344 not taken.
✓ Branch 345 taken 5098 times.
✓ Branch 346 taken 8937 times.
✓ Branch 347 taken 1352 times.
✓ Branch 348 taken 18121 times.
✓ Branch 349 taken 120 times.
✗ Branch 350 not taken.
✓ Branch 351 taken 11226380 times.
✓ Branch 352 taken 1542787 times.
✓ Branch 353 taken 414918 times.
✓ Branch 354 taken 2441 times.
✓ Branch 355 taken 2441 times.
✗ Branch 356 not taken.
✗ Branch 357 not taken.
✓ Branch 358 taken 1 times.
✗ Branch 359 not taken.
✗ Branch 360 not taken.
✗ Branch 361 not taken.
✗ Branch 362 not taken.
✗ Branch 363 not taken.
✓ Branch 364 taken 4223670 times.
✓ Branch 365 taken 50901 times.
✓ Branch 366 taken 194102 times.
✓ Branch 367 taken 89238 times.
✓ Branch 368 taken 302108 times.
✓ Branch 369 taken 6914 times.
✓ Branch 370 taken 9744 times.
✗ Branch 371 not taken.
✓ Branch 372 taken 3 times.
✓ Branch 373 taken 107937 times.
✓ Branch 374 taken 89238 times.
✓ Branch 375 taken 155013 times.
✓ Branch 376 taken 147095 times.
✗ Branch 377 not taken.
✗ Branch 378 not taken.
✓ Branch 379 taken 6914 times.
✓ Branch 380 taken 43786 times.
✓ Branch 381 taken 6914 times.
396260626 switch (yyrule)
2920 {
2921 case 2: /* Init: Global_List */
2922 #line 309 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2923 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2924 #line 2925 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2925 break;
2926
2927 case 3: /* Global_List: Global_List Global_Statement */
2928 #line 315 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2929 {
2930 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
2931 root->addDeclaration(declaration);}
2932 #line 2933 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2933 break;
2934
2935 case 4: /* Global_List: Global_List Option */
2936 #line 318 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2937 {
2938 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
2939 root->options.push_back(option);
2940 if (root->hasDeclarations())
2941 yywarn("WARNING: Options should come before everything else.");}
2942 #line 2943 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2943 break;
2944
2945 case 5: /* Global_List: %empty */
2946 #line 323 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2947 {root.reset(new ASTFile(noloc));}
2948 #line 2949 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2949 break;
2950
2951 case 6: /* Global_Statement: Import */
2952 #line 327 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2953 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2954 #line 2955 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2955 break;
2956
2957 case 7: /* Global_Statement: IncludePath */
2958 #line 328 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2959 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2960 #line 2961 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2961 break;
2962
2963 case 8: /* Global_Statement: Namespace */
2964 #line 329 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2965 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2966 #line 2967 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2967 break;
2968
2969 case 9: /* Global_Statement: DataTypeDef SEMICOLON */
2970 #line 330 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2971 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2972 #line 2973 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2973 break;
2974
2975 case 10: /* Global_Statement: ScriptTypeDef SEMICOLON */
2976 #line 331 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2977 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2978 #line 2979 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2979 break;
2980
2981 case 11: /* Global_Statement: Data SEMICOLON */
2982 #line 332 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2983 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2984 #line 2985 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2985 break;
2986
2987 case 12: /* Global_Statement: Function */
2988 #line 333 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2989 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2990 #line 2991 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2991 break;
2992
2993 case 13: /* Global_Statement: Script */
2994 #line 334 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2995 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2996 #line 2997 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2997 break;
2998
2999 case 14: /* Global_Statement: Annotated_Script */
3000 #line 335 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3001 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3002 #line 3003 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3003 break;
3004
3005 case 15: /* Global_Statement: Class */
3006 #line 336 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3007 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3008 #line 3009 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3009 break;
3010
3011 case 16: /* Global_Statement: Annotated_Enum SEMICOLON */
3012 #line 337 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3013 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3014 #line 3015 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3015 break;
3016
3017 case 17: /* Global_Statement: Using SEMICOLON */
3018 #line 338 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3019 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3020 #line 3021 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3021 break;
3022
3023 case 18: /* Global_Statement: AlwaysUsing SEMICOLON */
3024 #line 339 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3025 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3026 #line 3027 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3027 break;
3028
3029 case 19: /* Global_Statement: Statement_Assert SEMICOLON */
3030 #line 340 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3031 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3032 #line 3033 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3033 break;
3034
3035 case 20: /* Global_Statement: EXPECTERROR LPAREN Expression_Constant RPAREN Global_Statement */
3036 #line 341 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3037 {
3038 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3039 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3040 declaration->compileErrorCatches.push_back(errorId);
3041 (*yyvalp) = declaration;}
3042 #line 3043 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3043 break;
3044
3045 case 21: /* Trail_Comma_RBrace: COMMA RBRACE */
3046 #line 349 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3047 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3048 #line 3049 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3049 break;
3050
3051 case 22: /* Trail_Comma_RBrace: RBRACE */
3052 #line 350 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3053 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3054 #line 3055 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3055 break;
3056
3057 case 23: /* Namespace: NAMESPACE Scoperes_Identifier_List LBRACE RBRACE */
3058 #line 356 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3059 {
3060 ASTExprIdentifier* idens = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3061 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3062 namesp->identifier = idens->componentNodes.front()->clone();
3063 if (!ParserHelper::isValidIdentifier(namesp->getName()))
3064 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,namesp->getName().c_str());
3065 auto& components = idens->componentNodes;
3066 if(components.size() > 1)
3067 for(auto it = components.begin() + 1;
3068 it != components.end(); ++it)
3069 {
3070 ASTNamespace* subsp = new ASTNamespace((*yylocp));
3071 subsp->identifier = (*it)->clone();
3072 if (!ParserHelper::isValidIdentifier(subsp->getName()))
3073 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,subsp->getName().c_str());
3074 namesp->namespaces.push_back(subsp);
3075 }
3076 delete idens;
3077 (*yyvalp) = namesp;
3078 }
3079 #line 3080 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3080 break;
3081
3082 case 24: /* Namespace: NAMESPACE Scoperes_Identifier_List LBRACE Namespace_Block_List RBRACE */
3083 #line 376 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3084 {
3085 ASTExprIdentifier* idens = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3086 auto& components = idens->componentNodes;
3087 int32_t size = components.size();
3088 if(size == 1)
3089 {
3090 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3091 namesp->identifier = components.front()->clone();
3092 namesp->location = (*yylocp);
3093 delete idens;
3094 (*yyvalp) = namesp;
3095 }
3096 else if(size == 2)
3097 {
3098 ASTNamespace* top = new ASTNamespace((*yylocp));
3099 top->identifier = components.front()->clone();
3100 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3101 namesp->identifier = components[1]->clone();
3102 namesp->location = (*yylocp);
3103 top->namespaces.push_back(namesp);
3104 delete idens;
3105 (*yyvalp) = top;
3106 }
3107 else
3108 {
3109 ASTNamespace* top = new ASTNamespace((*yylocp));
3110 top->identifier = components.front()->clone();
3111 ASTNamespace* temp = top;
3112 ASTNamespace* temp2;
3113 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3114 namesp->identifier = components.back()->clone();
3115 components.pop_back();
3116 namesp->location = (*yylocp);
3117 for(auto it = components.begin() + 1;
3118 it != components.end(); ++it)
3119 {
3120 temp2 = new ASTNamespace((*yylocp));
3121 temp->identifier = (*it)->clone();
3122 temp->namespaces.push_back(temp2);
3123 temp = temp2;
3124 }
3125 temp->namespaces.push_back(namesp);
3126 delete idens;
3127 (*yyvalp) = top;
3128 }
3129
3130 auto ns = (ASTNamespace*)(*yyvalp);
3131 if (!ParserHelper::isValidIdentifier(ns->getName()))
3132 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,ns->getName().c_str());
3133 }
3134 #line 3135 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3135 break;
3136
3137 case 25: /* Namespace_Block_List: Namespace_Block_List Namespace_Statement */
3138 #line 429 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3139 {
3140 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3141 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3142 namesp->addDeclaration(*declaration);
3143 namesp->location = (*yylocp);
3144 (*yyvalp) = namesp;}
3145 #line 3146 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3146 break;
3147
3148 case 26: /* Namespace_Block_List: Namespace_Block_List Option */
3149 #line 435 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3150 {
3151 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3152 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3153 namesp->options.push_back(option);
3154 namesp->location = (*yylocp);
3155 (*yyvalp) = namesp;
3156 if (!namesp->variables.empty()
3157 || !namesp->functions.empty()
3158 || !namesp->dataTypes.empty()
3159 || !namesp->scriptTypes.empty()) {
3160 yywarn("WARNING: Options should come before everything else.");}}
3161 #line 3162 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3162 break;
3163
3164 case 27: /* Namespace_Block_List: Namespace_Statement */
3165 #line 446 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3166 {
3167 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3168 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3169 namesp->addDeclaration(*declaration);
3170 (*yyvalp) = namesp;}
3171 #line 3172 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3172 break;
3173
3174 case 28: /* Namespace_Block_List: Option */
3175 #line 451 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3176 {
3177 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3178 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3179 namesp->options.push_back(option);
3180 (*yyvalp) = namesp;}
3181 #line 3182 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3182 break;
3183
3184 case 29: /* Namespace_Statement: Namespace */
3185 #line 459 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3186 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3187 #line 3188 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3188 break;
3189
3190 case 30: /* Namespace_Statement: DataTypeDef SEMICOLON */
3191 #line 460 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3192 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3193 #line 3194 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3194 break;
3195
3196 case 31: /* Namespace_Statement: ScriptTypeDef SEMICOLON */
3197 #line 461 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3198 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3199 #line 3200 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3200 break;
3201
3202 case 32: /* Namespace_Statement: Data SEMICOLON */
3203 #line 462 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3204 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3205 #line 3206 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3206 break;
3207
3208 case 33: /* Namespace_Statement: Function */
3209 #line 463 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3210 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3211 #line 3212 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3212 break;
3213
3214 case 34: /* Namespace_Statement: Script */
3215 #line 464 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3216 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3217 #line 3218 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3218 break;
3219
3220 case 35: /* Namespace_Statement: Annotated_Script */
3221 #line 465 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3222 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3223 #line 3224 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3224 break;
3225
3226 case 36: /* Namespace_Statement: Class */
3227 #line 466 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3228 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3229 #line 3230 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3230 break;
3231
3232 case 37: /* Namespace_Statement: Annotated_Enum SEMICOLON */
3233 #line 467 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3234 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3235 #line 3236 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3236 break;
3237
3238 case 38: /* Namespace_Statement: Using SEMICOLON */
3239 #line 468 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3240 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3241 #line 3242 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3242 break;
3243
3244 case 39: /* Namespace_Statement: Statement_Assert SEMICOLON */
3245 #line 469 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3246 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3247 #line 3248 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3248 break;
3249
3250 case 40: /* Namespace_Statement: EXPECTERROR LPAREN Expression_Constant RPAREN Namespace_Statement */
3251 #line 470 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3252 {
3253 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3254 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3255 declaration->compileErrorCatches.push_back(errorId);
3256 (*yyvalp) = declaration;}
3257 #line 3258 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3258 break;
3259
3260 case 41: /* Using: USING NAMESPACE Scoperes_Identifier_List */
3261 #line 480 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3262 {
3263 ASTExprIdentifier* idlist = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3264 (*yyvalp) = new ASTUsingDecl(idlist, (*yylocp));
3265 }
3266 #line 3267 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3267 break;
3268
3269 case 42: /* AlwaysUsing: ALWAYS USING NAMESPACE Scoperes_Identifier_List */
3270 #line 486 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3271 {
3272 ASTExprIdentifier* idlist = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3273 (*yyvalp) = new ASTUsingDecl(idlist, (*yylocp), true);
3274 }
3275 #line 3276 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3276 break;
3277
3278 case 43: /* Import: IMPORT IMPORTSTRING */
3279 #line 495 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3280 {
3281 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3282 (*yyvalp) = new ASTImportDecl(str, (*yylocp));
3283 }
3284 #line 3285 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3285 break;
3286
3287 case 44: /* Import: HASH INCLUDE IMPORTSTRING */
3288 #line 499 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3289 {
3290 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3291 (*yyvalp) = new ASTImportDecl(str, (*yylocp), true);
3292 }
3293 #line 3294 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3294 break;
3295
3296 case 45: /* Import: HASH INCLUDEIF LPAREN Expression_Constant COMMA IMPORTSTRING RPAREN */
3297 #line 503 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3298 {
3299 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3300 ASTExprConst* cond = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3301 ASTImportDecl* decl = new ASTImportDecl(str, (*yylocp), true);
3302 (*yyvalp) = new ASTImportCondDecl(cond, decl, (*yylocp));
3303 }
3304 #line 3305 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3305 break;
3306
3307 case 46: /* IncludePath: HASH INCLUDEPATH IMPORTSTRING */
3308 #line 512 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3309 {
3310 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3311 (*yyvalp) = new ASTIncludePath(str->getValue(), (*yylocp));
3312 delete str;}
3313 #line 3314 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3314 break;
3315
3316 case 47: /* Option: HASH OPTION IDENTIFIER Expression_Constant ENDLINE */
3317 #line 522 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3318 {
3319 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3320 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3321 (*yyvalp) = new ASTSetOption(name->getValue(), expr, (*yylocp));
3322 delete name;}
3323 #line 3324 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3324 break;
3325
3326 case 48: /* Option: HASH OPTION IDENTIFIER INHERIT ENDLINE */
3327 #line 528 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3328 {
3329 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3330 (*yyvalp) = new ASTSetOption(
3331 name->getValue(), CompileOptionSetting::Inherit, (*yylocp));
3332 delete name;}
3333 #line 3334 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3334 break;
3335
3336 case 49: /* Option: HASH OPTION IDENTIFIER DEFAULT ENDLINE */
3337 #line 533 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3338 {
3339 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3340 (*yyvalp) = new ASTSetOption(
3341 name->getValue(), CompileOptionSetting::Default, (*yylocp));
3342 delete name;}
3343 #line 3344 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3344 break;
3345
3346 case 50: /* Option: HASH OPTION DEFAULT Expression_Constant ENDLINE */
3347 #line 538 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3348 {
3349 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3350 (*yyvalp) = new ASTSetOption("default", expr, (*yylocp));}
3351 #line 3352 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3352 break;
3353
3354 case 51: /* Option: HASH OPTION DEFAULT INHERIT ENDLINE */
3355 #line 541 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3356 {
3357 (*yyvalp) = new ASTSetOption(
3358 "default", CompileOptionSetting::Inherit, (*yylocp));}
3359 #line 3360 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3360 break;
3361
3362 case 52: /* Option: HASH OPTION DEFAULT DEFAULT ENDLINE */
3363 #line 544 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3364 {
3365 (*yyvalp) = new ASTSetOption(
3366 "default", CompileOptionSetting::Default, (*yylocp));}
3367 #line 3368 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3368 break;
3369
3370 case 53: /* Statement_Assert: CASSERT LPAREN Expression_Constant RPAREN */
3371 #line 553 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3372 {
3373 (*yyvalp) = new ASTAssert((ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, NULL, (*yylocp));
3374 }
3375 #line 3376 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3376 break;
3377
3378 case 54: /* Statement_Assert: CASSERT LPAREN Expression_Constant COMMA QuotedString RPAREN */
3379 #line 556 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3380 {
3381 (*yyvalp) = new ASTAssert((ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval, (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));
3382 }
3383 #line 3384 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3384 break;
3385
3386 case 55: /* DataTypeDef: StandardDataTypedef */
3387 #line 564 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3388 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3389 #line 3390 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3390 break;
3391
3392 case 56: /* StandardDataTypedef: TYPEDEF DataType IDENTIFIER */
3393 #line 567 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3394 {
3395 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3396 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3397 (*yyvalp) = new ASTDataTypeDef(type, name->getValue(), (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yyloc));
3398 delete name;}
3399 #line 3400 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3400 break;
3401
3402 case 57: /* DataType: DataType EMPTYBRACKETS */
3403 #line 575 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3404 {
3405 ASTDataType* dtype = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3406 ++dtype->becomeArray;
3407 (*yyvalp) = dtype;
3408 }
3409 #line 3410 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3410 break;
3411
3412 case 58: /* DataType: DataType_Mods */
3413 #line 580 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3414 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3415 #line 3416 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3416 break;
3417
3418 case 59: /* DataType_Mods: ZCONST DataType_Base */
3419 #line 584 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3420 {
3421 ASTDataType* dtype = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3422 ++dtype->constant_; //Increment the number of `const` keywords. If >1, this will produce an error later.
3423 (*yyvalp) = dtype;
3424 }
3425 #line 3426 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3426 break;
3427
3428 case 60: /* DataType_Mods: DataType_Base */
3429 #line 589 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3430 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3431 #line 3432 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3432 break;
3433
3434 case 61: /* DataType_Base: ZAUTO */
3435 #line 594 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3436 {(*yyvalp) = new ASTDataType(DataType::ZAUTO, (*yylocp));}
3437 #line 3438 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3438 break;
3439
3440 case 62: /* DataType_Base: ZVOID */
3441 #line 595 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3442 {(*yyvalp) = new ASTDataType(DataType::ZVOID, (*yylocp));}
3443 #line 3444 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3444 break;
3445
3446 case 63: /* DataType_Base: UNTYPED */
3447 #line 596 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3448 {(*yyvalp) = new ASTDataType(DataType::UNTYPED, (*yylocp));}
3449 #line 3450 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3450 break;
3451
3452 case 64: /* DataType_Base: ZBOOL */
3453 #line 597 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3454 {(*yyvalp) = new ASTDataType(DataType::BOOL, (*yylocp));}
3455 #line 3456 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3456 break;
3457
3458 case 65: /* DataType_Base: ZFLOAT */
3459 #line 598 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3460 {(*yyvalp) = new ASTDataType(DataType::FLOAT, (*yylocp));}
3461 #line 3462 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3462 break;
3463
3464 case 66: /* DataType_Base: ZCHAR */
3465 #line 599 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3466 {(*yyvalp) = new ASTDataType(DataType::CHAR, (*yylocp));}
3467 #line 3468 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3468 break;
3469
3470 case 67: /* DataType_Base: ZLONG */
3471 #line 600 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3472 {(*yyvalp) = new ASTDataType(DataType::LONG, (*yylocp));}
3473 #line 3474 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3474 break;
3475
3476 case 68: /* DataType_Base: ZRGB */
3477 #line 601 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3478 {(*yyvalp) = new ASTDataType(DataType::RGBDATA, (*yylocp));}
3479 #line 3480 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3480 break;
3481
3482 case 69: /* DataType_Base: Identifier_List */
3483 #line 603 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3484 {
3485 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3486 std::string comment = std::move(iden->doc_comment);
3487 ASTDataType* datatype = new ASTDataType(new DataTypeUnresolved(iden), (*yylocp));
3488 datatype->doc_comment = std::move(comment);
3489 (*yyvalp) = datatype;
3490 }
3491 #line 3492 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3492 break;
3493
3494 case 70: /* ScriptTypeDef: SCRIPT TYPEDEF Script_Type IDENTIFIER */
3495 #line 612 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3496 {
3497 ASTScriptType* oldType = static_cast<ASTScriptType*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval);
3498 ASTString* newName = static_cast<ASTString*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
3499 (*yyvalp) = new ASTScriptTypeDef(oldType, newName->getValue(), (*yylocp));
3500 delete newName;}
3501 #line 3502 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3502 break;
3503
3504 case 71: /* Data: INTERNAL Data */
3505 #line 623 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3506 {
3507 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3508 if (list->internal)
3509 yyerrmsg("internal modifier used twice");
3510 list->internal = true;
3511 (*yyvalp) = list;}
3512 #line 3513 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3513 break;
3514
3515 case 72: /* Data: DataType Data_List */
3516 #line 629 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3517 {
3518 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3519 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3520 list->baseType = type;
3521 if (!type->doc_comment.empty())
3522 list->doc_comment = std::move(type->doc_comment);
3523 list->location = (*yylocp);
3524 (*yyvalp) = list;}
3525 #line 3526 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3526 break;
3527
3528 case 73: /* Data_List: Data_List COMMA Data_Element */
3529 #line 640 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3530 {
3531 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3532 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3533 list->addDeclaration(element);
3534 list->location = (*yylocp);
3535 (*yyvalp) = list;}
3536 #line 3537 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3537 break;
3538
3539 case 74: /* Data_List: Data_Element */
3540 #line 646 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3541 {
3542 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3543 ASTDataDeclList* list = new ASTDataDeclList((*yylocp));
3544 list->addDeclaration(element);
3545 if (!element->doc_comment.empty())
3546 list->doc_comment = std::move(element->doc_comment);
3547 (*yyvalp) = list;}
3548 #line 3549 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3549 break;
3550
3551 case 75: /* Data_Element: Data_Element_Array_List ASSIGN Expression */
3552 #line 656 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3553 {
3554 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3555 ASTExpr* initializer = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3556 element->setInitializer(initializer);
3557 element->location = (*yylocp);
3558 (*yyvalp) = element;}
3559 #line 3560 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3560 break;
3561
3562 case 76: /* Data_Element: Data_Element_Array_List */
3563 #line 662 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3564 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3565 #line 3566 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3566 break;
3567
3568 case 77: /* Data_Element_Array_List: Data_Element_Array_List Data_Element_Array_Element */
3569 #line 666 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3570 {
3571 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3572 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3573 element->extraArrays.push_back(extraArray);
3574 element->location = (*yylocp);
3575 (*yyvalp) = element;}
3576 #line 3577 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3577 break;
3578
3579 case 78: /* Data_Element_Array_List: Identifier */
3580 #line 672 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3581 {
3582 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3583 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3584 element->identifier = name;
3585 if (!ParserHelper::isValidIdentifier(name->getValue()))
3586 yyerrmsg("ERROR: invalid identifier",name->location.first_line,name->location.first_column,name->getValue().c_str());
3587 element->doc_comment = std::move(name->doc_comment);
3588 if (!first_identifier_for_line) first_identifier_for_line = element;
3589 (*yyvalp) = element;
3590 }
3591 #line 3592 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3592 break;
3593
3594 case 79: /* Single_Data_req_assign: DataType Identifier ASSIGN Expression */
3595 #line 685 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3596 {
3597 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3598 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3599 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3600 element->identifier = name;
3601 ASTExpr* initializer = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3602 element->setInitializer(initializer);
3603 element->baseType = type;
3604 element->location = (*yylocp);
3605 (*yyvalp) = element;}
3606 #line 3607 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3607 break;
3608
3609 case 80: /* Data_Element_Array_Element: LBRACKET Data_Element_Array_Element_Size_List RBRACKET */
3610 #line 698 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3611 {
3612 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3613 extraArray->location = (*yylocp);
3614 (*yyvalp) = extraArray;}
3615 #line 3616 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3616 break;
3617
3618 case 81: /* Data_Element_Array_Element: EMPTYBRACKETS */
3619 #line 702 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3620 {(*yyvalp) = new ASTDataDeclExtraArray((*yylocp));}
3621 #line 3622 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3622 break;
3623
3624 case 82: /* Data_Element_Array_Element_Size_List: Data_Element_Array_Element_Size_List COMMA Expression_Constant */
3625 #line 706 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3626 {
3627 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3628 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3629 extraArray->dimensions.push_back(size);
3630 extraArray->location = (*yylocp);
3631 (*yyvalp) = extraArray;}
3632 #line 3633 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3633 break;
3634
3635 case 83: /* Data_Element_Array_Element_Size_List: Expression_Constant */
3636 #line 712 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3637 {
3638 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3639 ASTDataDeclExtraArray* extraArray = new ASTDataDeclExtraArray((*yylocp));
3640 extraArray->dimensions.push_back(size);
3641 (*yyvalp) = extraArray;}
3642 #line 3643 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3643 break;
3644
3645 case 84: /* Function: CONSTEXPR Function */
3646 #line 724 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3647 {
3648 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3649 if(func->getFlag(FUNCFLAG_CONSTEXPR))
3650 {
3651 func->setFlag(FUNCFLAG_INVALID);
3652 func->invalidMsg += " Duplicate `constexpr`.";
3653 }
3654 func->setFlag(FUNCFLAG_CONSTEXPR);
3655 (*yyvalp) = func;
3656 }
3657 #line 3658 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3658 break;
3659
3660 case 85: /* Function: STATIC Function */
3661 #line 735 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3662 {
3663 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3664 if(func->getFlag(FUNCFLAG_STATIC))
3665 {
3666 func->setFlag(FUNCFLAG_INVALID);
3667 func->invalidMsg += " Duplicate `static`.";
3668 }
3669 else if(func->getFlag(FUNCFLAG_DESTRUCTOR|FUNCFLAG_CONSTRUCTOR))
3670 {
3671 func->setFlag(FUNCFLAG_INVALID);
3672 func->invalidMsg += " Constructors and destructors cannot be static.";
3673 }
3674 else func->setFlag(FUNCFLAG_STATIC);
3675 (*yyvalp) = func;
3676 }
3677 #line 3678 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3678 break;
3679
3680 case 86: /* Function: INLINE Function */
3681 #line 751 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3682 {
3683 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3684 if(func->getFlag(FUNCFLAG_INLINE))
3685 {
3686 func->setFlag(FUNCFLAG_INVALID);
3687 func->invalidMsg += " Duplicate `inline`.";
3688 }
3689 else func->setFlag(FUNCFLAG_INLINE);
3690 (*yyvalp) = func;
3691 }
3692 #line 3693 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3693 break;
3694
3695 case 87: /* Function: INTERNAL Function */
3696 #line 762 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3697 {
3698 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3699 if(func->getFlag(FUNCFLAG_INTERNAL))
3700 {
3701 func->setFlag(FUNCFLAG_INVALID);
3702 func->invalidMsg += " Duplicate `internal`.";
3703 }
3704 if(func->block)
3705 {
3706 func->setFlag(FUNCFLAG_INVALID);
3707 func->invalidMsg += " Internal function must not have a body.";
3708 }
3709 func->setFlag(FUNCFLAG_INTERNAL);
3710 func->prototype = false;
3711 (*yyvalp) = func;
3712 }
3713 #line 3714 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3714 break;
3715
3716 case 88: /* Function: DataType Function_Typeless */
3717 #line 778 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3718 {
3719 ASTDataType* returnType = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3720 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3721 if (!returnType->doc_comment.empty())
3722 func->doc_comment = std::move(returnType->doc_comment);
3723 func->returnType = returnType;
3724 (*yyvalp) = func;}
3725 #line 3726 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3726 break;
3727
3728 case 89: /* Function_Typeless: Function_Heading Statement_Block */
3729 #line 789 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3730 {
3731 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3732 func->block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3733 (*yyvalp) = func;}
3734 #line 3735 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3735 break;
3736
3737 case 90: /* Function_Typeless: Function_Heading SEMICOLON */
3738 #line 793 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3739 {
3740 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3741 func->prototype = true;
3742 func->defaultReturn = new ASTExprConst(new ASTExprCast(new ASTDataType(DataType::CUNTYPED, (*yylocp)), new ASTNumberLiteral(new ASTFloat(0, 0, (*yylocp)), (*yylocp)), (*yylocp)), (*yylocp));
3743 (*yyvalp) = func;}
3744 #line 3745 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3745 break;
3746
3747 case 91: /* Function_Typeless: Function_Heading COLON DEFAULT Expression_Constant SEMICOLON */
3748 #line 798 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3749 {
3750 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3751 func->prototype = true;
3752 func->defaultReturn = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3753 (*yyvalp) = func;}
3754 #line 3755 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3755 break;
3756
3757 case 92: /* Function_Heading: Identifier_List LPAREN Function_Parameters_List RPAREN */
3758 #line 806 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3759 {
3760 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3761 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3762 func->identifier = iden;
3763 func->location = (*yylocp);
3764 func->doc_comment = std::move(iden->doc_comment);
3765 (*yyvalp) = func;}
3766 #line 3767 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3767 break;
3768
3769 case 93: /* Function_Heading: Identifier_List LT FunctionTemplateList GT LPAREN Function_Parameters_List RPAREN */
3770 #line 814 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3771 {
3772 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
3773 ASTStringList* template_list = (ASTStringList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3774 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3775 func->identifier = iden;
3776 func->templates.swap(template_list->strings);
3777 delete template_list;
3778 func->location = (*yylocp);
3779 func->doc_comment = std::move(iden->doc_comment);
3780 (*yyvalp) = func;}
3781 #line 3782 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3782 break;
3783
3784 case 94: /* FunctionTemplateList: Identifier */
3785 #line 827 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3786 {
3787 ASTStringList* list = new ASTStringList((*yylocp));
3788 ASTString* templ = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3789 list->strings.push_back(templ);
3790 (*yyvalp) = list;}
3791 #line 3792 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3792 break;
3793
3794 case 95: /* FunctionTemplateList: FunctionTemplateList COMMA Identifier */
3795 #line 832 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3796 {
3797 ASTStringList* list = (ASTStringList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3798 ASTString* templ = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3799 list->location = (*yylocp);
3800 list->strings.push_back(templ);
3801 (*yyvalp) = list;}
3802 #line 3803 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3803 break;
3804
3805 case 96: /* Function_Parameters_List: Function_Parameters_Element COMMA Function_Parameters_List */
3806 #line 840 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3807 {
3808 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3809 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3810 push_front(func->parameters, param);
3811 func->location = (*yylocp);
3812 (*yyvalp) = func;}
3813 #line 3814 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3814 break;
3815
3816 case 97: /* Function_Parameters_List: Function_Parameters_Element */
3817 #line 846 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3818 {
3819 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3820 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3821 push_front(func->parameters, param);
3822 (*yyvalp) = func;}
3823 #line 3824 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3824 break;
3825
3826 case 98: /* Function_Parameters_List: Function_OptParams_List */
3827 #line 851 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3828 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3829 #line 3830 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3830 break;
3831
3832 case 99: /* Function_Parameters_List: Function_VarArg_Element */
3833 #line 852 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3834 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3835 #line 3836 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3836 break;
3837
3838 case 100: /* Function_Parameters_List: %empty */
3839 #line 853 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3840 {(*yyvalp) = new ASTFuncDecl((*yylocp));}
3841 #line 3842 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3842 break;
3843
3844 case 101: /* Function_Parameters_Element: DataType Identifier */
3845 #line 857 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3846 {
3847 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3848 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3849 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3850 element->identifier = name;
3851 element->baseType = type;
3852 (*yyvalp) = element;}
3853 #line 3854 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3854 break;
3855
3856 case 102: /* Function_OptParams_List: Function_Parameters_Element ASSIGN Expression COMMA Function_OptParams_List */
3857 #line 867 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3858 {
3859 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3860 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3861 ASTExpr* val = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3862 push_front(func->parameters, param);
3863 push_front(func->optparams, val);
3864 func->location = (*yylocp);
3865 (*yyvalp) = func;}
3866 #line 3867 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3867 break;
3868
3869 case 103: /* Function_OptParams_List: Function_Parameters_Element ASSIGN Expression */
3870 #line 875 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3871 {
3872 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3873 ASTExpr* val = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3874 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3875 push_front(func->parameters, param);
3876 push_front(func->optparams, val);
3877 (*yyvalp) = func;}
3878 #line 3879 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3879 break;
3880
3881 case 104: /* Function_VarArg_Element: RANGE Function_Parameters_Element */
3882 #line 885 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3883 {
3884 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3885 push_front(func->parameters, (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
3886 func->setFlag(FUNCFLAG_VARARGS);
3887 (*yyvalp) = func;}
3888 #line 3889 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3889 break;
3890
3891 case 105: /* Class_Ident: IDENTIFIER */
3892 #line 894 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3893 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3894 #line 3895 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3895 break;
3896
3897 case 106: /* Class: ZCLASS Class_Ident Class_Block */
3898 #line 897 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3899 {
3900 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3901 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3902 user_class->location = name->location;
3903 user_class->identifier = name;
3904 user_class->doc_comment = std::move(name->doc_comment);
3905 if (!first_identifier_for_line) first_identifier_for_line = user_class;
3906 (*yyvalp) = user_class;}
3907 #line 3908 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3908 break;
3909
3910 case 107: /* Class_Block: LBRACE Class_Block_List RBRACE */
3911 #line 908 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3912 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3913 #line 3914 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3914 break;
3915
3916 case 108: /* Class_Block: LBRACE RBRACE */
3917 #line 909 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3918 {(*yyvalp) = new ASTClass((*yylocp));}
3919 #line 3920 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3920 break;
3921
3922 case 109: /* Class_Block_List: Class_Block_List Class_Block_Element */
3923 #line 913 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3924 {
3925 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3926 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3927 user_class->addDeclaration(*declaration);
3928 user_class->location = (*yylocp);
3929 (*yyvalp) = user_class;}
3930 #line 3931 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3931 break;
3932
3933 case 110: /* Class_Block_List: Class_Block_List Option */
3934 #line 919 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3935 {
3936 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3937 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3938 user_class->options.push_back(option);
3939 user_class->location = (*yylocp);
3940 (*yyvalp) = user_class;
3941 if (!user_class->variables.empty()
3942 || !user_class->functions.empty()
3943 || !user_class->types.empty()) {
3944 yywarn("WARNING: Options should come before everything else.");}}
3945 #line 3946 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3946 break;
3947
3948 case 111: /* Class_Block_List: Class_Block_List Class_Constructor */
3949 #line 929 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3950 {
3951 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3952 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3953 user_class->constructors.push_back(func);
3954 (*yyvalp) = user_class;}
3955 #line 3956 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3956 break;
3957
3958 case 112: /* Class_Block_List: Class_Block_List Class_Destructor */
3959 #line 934 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3960 {
3961 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3962 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3963 if(user_class->destructor)
3964 {
3965 auto const& loc = func->location;
3966 yyerrmsg("ERROR: Class can only have one destructor!",loc.first_line,loc.first_column,func->getName().c_str());
3967 delete func;
3968 }
3969 else user_class->destructor = func;
3970 (*yyvalp) = user_class;}
3971 #line 3972 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3972 break;
3973
3974 case 113: /* Class_Block_List: Class_Block_Element */
3975 #line 945 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3976 {
3977 ASTClass* user_class = new ASTClass((*yylocp));
3978 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3979 user_class->addDeclaration(*declaration);
3980 (*yyvalp) = user_class;}
3981 #line 3982 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3982 break;
3983
3984 case 114: /* Class_Block_List: Option */
3985 #line 950 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3986 {
3987 ASTClass* user_class = new ASTClass((*yylocp));
3988 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3989 user_class->options.push_back(option);
3990 (*yyvalp) = user_class;}
3991 #line 3992 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3992 break;
3993
3994 case 115: /* Class_Block_List: Class_Constructor */
3995 #line 955 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3996 {
3997 ASTClass* user_class = new ASTClass((*yylocp));
3998 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3999 user_class->constructors.push_back(func);
4000 (*yyvalp) = user_class;}
4001 #line 4002 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4002 break;
4003
4004 case 116: /* Class_Block_List: Class_Destructor */
4005 #line 960 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4006 {
4007 ASTClass* user_class = new ASTClass((*yylocp));
4008 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4009 if(user_class->destructor)
4010 {
4011 auto const& loc = func->location;
4012 yyerrmsg("ERROR: Class can only have one destructor!",loc.first_line,loc.first_column,func->getName().c_str());
4013 delete func;
4014 }
4015 else user_class->destructor = func;
4016 (*yyvalp) = user_class;}
4017 #line 4018 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4018 break;
4019
4020 case 117: /* Class_Constructor: INTERNAL Class_Constructor */
4021 #line 974 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4022 {
4023 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4024 if(func->getFlag(FUNCFLAG_INTERNAL))
4025 {
4026 func->setFlag(FUNCFLAG_INVALID);
4027 func->invalidMsg += " Duplicate `internal`.";
4028 }
4029 else func->setFlag(FUNCFLAG_INTERNAL);
4030 func->prototype = false;
4031 (*yyvalp) = func;}
4032 #line 4033 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4033 break;
4034
4035 case 118: /* Class_Constructor: Function_Typeless */
4036 #line 984 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4037 {
4038 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4039 ASTDataType* returnType = new ASTDataType(DataType::ZVOID, (*yylocp));
4040 func->returnType = returnType;
4041 func->setFlag(FUNCFLAG_CONSTRUCTOR|FUNCFLAG_CLASSFUNC);
4042 if(func->getFlag(FUNCFLAG_STATIC))
4043 {
4044 func->setFlag(FUNCFLAG_INVALID);
4045 func->invalidMsg += " Constructors and destructors cannot be static.";
4046 }
4047 (*yyvalp) = func;}
4048 #line 4049 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4049 break;
4050
4051 case 119: /* Class_Destructor: BITNOT Function_Typeless */
4052 #line 997 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4053 {
4054 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4055 ASTDataType* returnType = new ASTDataType(DataType::ZVOID, (*yylocp));
4056 func->returnType = returnType;
4057 func->setFlag(FUNCFLAG_DESTRUCTOR|FUNCFLAG_CLASSFUNC);
4058 if(func->getFlag(FUNCFLAG_STATIC))
4059 {
4060 func->setFlag(FUNCFLAG_INVALID);
4061 func->invalidMsg += " Constructors and destructors cannot be static.";
4062 }
4063 (*yyvalp) = func;}
4064 #line 4065 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4065 break;
4066
4067 case 120: /* Class_Data: Data */
4068 #line 1011 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4069 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4070 #line 4071 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4071 break;
4072
4073 case 121: /* Class_Block_Element: Class_Data SEMICOLON */
4074 #line 1015 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4075 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4076 #line 4077 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4077 break;
4078
4079 case 122: /* Class_Block_Element: Function */
4080 #line 1016 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4081 {
4082 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4083 func->setFlag(FUNCFLAG_CLASSFUNC);
4084 (*yyvalp) = func;}
4085 #line 4086 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4086 break;
4087
4088 case 123: /* Class_Block_Element: DataTypeDef SEMICOLON */
4089 #line 1020 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4090 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4091 #line 4092 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4092 break;
4093
4094 case 124: /* Class_Block_Element: Annotated_Enum SEMICOLON */
4095 #line 1021 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4096 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4097 #line 4098 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4098 break;
4099
4100 case 125: /* Class_Block_Element: Using SEMICOLON */
4101 #line 1022 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4102 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4103 #line 4104 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4104 break;
4105
4106 case 126: /* Class_Block_Element: Statement_Assert SEMICOLON */
4107 #line 1023 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4108 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4109 #line 4110 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4110 break;
4111
4112 case 127: /* Class_Block_Element: EXPECTERROR LPAREN Expression_Constant RPAREN Class_Block_Element */
4113 #line 1024 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4114 {
4115 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4116 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4117 declaration->compileErrorCatches.push_back(errorId);
4118 (*yyvalp) = declaration;}
4119 #line 4120 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4120 break;
4121
4122 case 128: /* Annotated_Script: Annotation_List Script */
4123 #line 1035 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4124 {
4125 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4126 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4127 handle_annotations(list, [&](AnnotData& data)
4128 {
4129 auto& key = data.key;
4130 if(key == "Author")
4131 {
4132 if(annot_type_check(ANNTY_STR, data))
4133 {
4134 annot_trunc_str(data.unescaped_val, 255);
4135 script->metadata.author = data.unescaped_val;
4136 }
4137 return true;
4138 }
4139 else if(key == "InitScript")
4140 {
4141 if(annot_type_check(ANNTY_INT, data))
4142 script->init_weight = data.intval.getZLong();
4143 return true;
4144 }
4145 else if((key.size() == 5 || key.size() == 6) && !key.compare(0,4,"Flag"))
4146 {
4147 byte c = key[4]-'0';
4148 if(key.size() == 6)
4149 c = (c*10)+key[5]-'0';
4150 if(c < 16)
4151 {
4152 if(annot_type_check(ANNTY_STR, data))
4153 {
4154 annot_trunc_str(data.unescaped_val, 255);
4155 script->metadata.usrflags[c] = data.unescaped_val;
4156 }
4157 return true;
4158 }
4159 }
4160 else if((key.size() == 9 || key.size() == 10) && !key.compare(0,8,"FlagHelp"))
4161 {
4162 byte c = key[8]-'0';
4163 if(key.size() == 10)
4164 c = (c*10)+key[9]-'0';
4165 if(c < 16)
4166 {
4167 if(annot_type_check(ANNTY_STR, data))
4168 {
4169 annot_trunc_str(data.val, 65535);
4170 script->metadata.usrflags_help[c] = data.val;
4171 }
4172 return true;
4173 }
4174 }
4175 else if(key.size() == 6 && !key.compare(0,5,"InitD"))
4176 {
4177 byte c = key[5]-'0';
4178 if(c < 8)
4179 {
4180 if(annot_type_check(ANNTY_STR, data))
4181 {
4182 annot_trunc_str(data.unescaped_val, 255);
4183 script->metadata.initd[c] = data.unescaped_val;
4184 }
4185 return true;
4186 }
4187 }
4188 else if(key.size() == 10)
4189 {
4190 byte c = key[9]-'0';
4191 if(!key.compare(0,9,"InitDType"))
4192 {
4193 if(c < 8)
4194 {
4195 if(annot_type_check(ANNTY_STR, data))
4196 {
4197 int8_t v = -1;
4198 upperstr(data.val);
4199 if(data.val.size() == 2 && data.val[0] == 'L')
4200 {
4201 switch(data.val[1])
4202 {
4203 case 'D': v = nswapLDEC; break;
4204 case 'H': v = nswapLHEX; break;
4205 }
4206 }
4207 else if(data.val.size() == 1)
4208 {
4209 switch(data.val[0])
4210 {
4211 case 'D': v = nswapDEC; break;
4212 case 'H': v = nswapHEX; break;
4213 case 'B': v = nswapBOOL; break;
4214 }
4215 }
4216 if(unsigned(v) < nswapMAX)
4217 script->metadata.initd_type[c] = v;
4218 else if(data.val == "-1")
4219 script->metadata.initd_type[c] = -1;
4220 else annot_errstr("ERROR: Bad Annotation Value: '@" + key + "' must be"
4221 " exactly 'D','H','LD','LH','B', or '-1' NOT '" + data.strval + "'.");
4222 }
4223 return true;
4224 }
4225 }
4226 else if(!key.compare(0,9,"InitDHelp"))
4227 {
4228 if(c < 8)
4229 {
4230 if(annot_type_check(ANNTY_STR, data))
4231 {
4232 annot_trunc_str(data.val, 65535);
4233 script->metadata.initd_help[c] = data.val;
4234 }
4235 return true;
4236 }
4237 }
4238 else if(!key.compare(0,9,"Attribute"))
4239 {
4240 if(c < 10)
4241 {
4242 if(annot_type_check(ANNTY_STR, data))
4243 {
4244 annot_trunc_str(data.unescaped_val, 255);
4245 script->metadata.attributes[c] = data.unescaped_val;
4246 }
4247 return true;
4248 }
4249 }
4250 else if(!key.compare(0,9,"Attribyte"))
4251 {
4252 if(c < 8)
4253 {
4254 if(annot_type_check(ANNTY_STR, data))
4255 {
4256 annot_trunc_str(data.unescaped_val, 255);
4257 script->metadata.attribytes[c] = data.unescaped_val;
4258 }
4259 return true;
4260 }
4261 }
4262 }
4263 else if(key.size() == 11 && !key.compare(0,10,"Attrishort"))
4264 {
4265 byte c = key[10]-'0';
4266 if(c < 8)
4267 {
4268 if(annot_type_check(ANNTY_STR, data))
4269 {
4270 annot_trunc_str(data.unescaped_val, 255);
4271 script->metadata.attrishorts[c] = data.unescaped_val;
4272 }
4273 return true;
4274 }
4275 }
4276 else if(key.size() == 14)
4277 {
4278 if(!key.compare(0,13,"AttributeHelp"))
4279 {
4280 byte c = key[13]-'0';
4281 if(c < 10)
4282 {
4283 if(annot_type_check(ANNTY_STR, data))
4284 {
4285 annot_trunc_str(data.val, 65535);
4286 script->metadata.attributes_help[c] = data.val;
4287 }
4288 return true;
4289 }
4290 }
4291 else if(!key.compare(0,13,"AttribyteHelp"))
4292 {
4293 byte c = key[13]-'0';
4294 if(c < 8)
4295 {
4296 if(annot_type_check(ANNTY_STR, data))
4297 {
4298 annot_trunc_str(data.val, 65535);
4299 script->metadata.attribytes_help[c] = data.val;
4300 }
4301 return true;
4302 }
4303 }
4304 }
4305 else if(key.size() == 15 && !key.compare(0,14,"AttrishortHelp"))
4306 {
4307 byte c = key[14]-'0';
4308 if(c < 8)
4309 {
4310 if(annot_type_check(ANNTY_STR, data))
4311 {
4312 annot_trunc_str(data.val, 65535);
4313 script->metadata.attrishorts_help[c] = data.val;
4314 }
4315 return true;
4316 }
4317 }
4318 return false;
4319 });
4320 (*yyvalp) = script;}
4321 #line 4322 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4322 break;
4323
4324 case 129: /* Script: Script_Type SCRIPT IDENTIFIER Script_Block */
4325 #line 1235 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4326 {
4327 ASTScriptType* type = (ASTScriptType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4328 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4329 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4330 script->identifier = name;
4331 script->type = type;
4332 script->metadata.script_name = name->getValue();
4333 script->location = (*yylocp);
4334 (*yyvalp) = script;}
4335 #line 4336 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4336 break;
4337
4338 case 130: /* Script_Type: IDENTIFIER */
4339 #line 1248 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4340 {
4341 ASTString* name = static_cast<ASTString*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4342 (*yyvalp) = new ASTScriptType(name->getValue(), (*yylocp));
4343 delete name;}
4344 #line 4345 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4345 break;
4346
4347 case 131: /* Script_Block: LBRACE Script_Block_List RBRACE */
4348 #line 1255 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4349 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4350 #line 4351 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4351 break;
4352
4353 case 132: /* Script_Block: LBRACE RBRACE */
4354 #line 1256 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4355 {(*yyvalp) = new ASTScript((*yylocp));}
4356 #line 4357 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4357 break;
4358
4359 case 133: /* Script_Block_List: Script_Block_List Script_Block_Element */
4360 #line 1260 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4361 {
4362 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4363 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4364 script->addDeclaration(*declaration);
4365 script->location = (*yylocp);
4366 (*yyvalp) = script;}
4367 #line 4368 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4368 break;
4369
4370 case 134: /* Script_Block_List: Script_Block_List Option */
4371 #line 1266 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4372 {
4373 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4374 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4375 script->options.push_back(option);
4376 script->location = (*yylocp);
4377 (*yyvalp) = script;
4378 if (!script->variables.empty()
4379 || !script->functions.empty()
4380 || !script->types.empty()) {
4381 yywarn("WARNING: Options should come before everything else.");}}
4382 #line 4383 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4383 break;
4384
4385 case 135: /* Script_Block_List: Script_Block_Element */
4386 #line 1276 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4387 {
4388 ASTScript* script = new ASTScript((*yylocp));
4389 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4390 script->addDeclaration(*declaration);
4391 (*yyvalp) = script;}
4392 #line 4393 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4393 break;
4394
4395 case 136: /* Script_Block_List: Option */
4396 #line 1281 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4397 {
4398 ASTScript* script = new ASTScript((*yylocp));
4399 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4400 script->options.push_back(option);
4401 (*yyvalp) = script;}
4402 #line 4403 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4403 break;
4404
4405 case 137: /* Script_Block_Element: Data SEMICOLON */
4406 #line 1289 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4407 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4408 #line 4409 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4409 break;
4410
4411 case 138: /* Script_Block_Element: Function */
4412 #line 1290 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4413 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4414 #line 4415 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4415 break;
4416
4417 case 139: /* Script_Block_Element: DataTypeDef SEMICOLON */
4418 #line 1291 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4419 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4420 #line 4421 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4421 break;
4422
4423 case 140: /* Script_Block_Element: Annotated_Enum SEMICOLON */
4424 #line 1292 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4425 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4426 #line 4427 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4427 break;
4428
4429 case 141: /* Script_Block_Element: Using SEMICOLON */
4430 #line 1293 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4431 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4432 #line 4433 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4433 break;
4434
4435 case 142: /* Script_Block_Element: Statement_Assert SEMICOLON */
4436 #line 1294 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4437 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4438 #line 4439 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4439 break;
4440
4441 case 143: /* Script_Block_Element: EXPECTERROR LPAREN Expression_Constant RPAREN Script_Block_Element */
4442 #line 1295 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4443 {
4444 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4445 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4446 declaration->compileErrorCatches.push_back(errorId);
4447 (*yyvalp) = declaration;}
4448 #line 4449 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4449 break;
4450
4451 case 144: /* Annotation_List: Annotation_List COMMA Annotation */
4452 #line 1303 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4453 {
4454 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4455 list->set.push_back((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4456 if (list->doc_comment.empty())
4457 list->doc_comment = std::move(((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval)->doc_comment);
4458 (*yyvalp) = list;}
4459 #line 4460 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4460 break;
4461
4462 case 145: /* Annotation_List: Annotation */
4463 #line 1309 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4464 {
4465 ASTAnnotationList* list = new ASTAnnotationList((*yylocp));
4466 list->set.push_back((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4467 list->doc_comment = std::move(((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval)->doc_comment);
4468 (*yyvalp) = list;}
4469 #line 4470 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4470 break;
4471
4472 case 146: /* Annotation: HANDLE IDENTIFIER LPAREN QuotedString RPAREN */
4473 #line 1317 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4474 {
4475 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4476 ASTString* val = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4477 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4478 a->doc_comment = std::move(key->doc_comment);
4479 (*yyvalp) = a;}
4480 #line 4481 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4481 break;
4482
4483 case 147: /* Annotation: HANDLE IDENTIFIER LPAREN NUMBER RPAREN */
4484 #line 1323 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4485 {
4486 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4487 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4488 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4489 a->doc_comment = std::move(key->doc_comment);
4490 (*yyvalp) = a;}
4491 #line 4492 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4492 break;
4493
4494 case 148: /* Annotation: HANDLE IDENTIFIER LPAREN LONGNUMBER RPAREN */
4495 #line 1329 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4496 {
4497 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4498 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4499 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4500 a->doc_comment = std::move(key->doc_comment);
4501 (*yyvalp) = a;}
4502 #line 4503 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4503 break;
4504
4505 case 149: /* Annotation: HANDLE IDENTIFIER LPAREN MINUS NUMBER RPAREN */
4506 #line 1335 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4507 {
4508 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4509 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4510 val->negative = !val->negative;
4511 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4512 a->doc_comment = std::move(key->doc_comment);
4513 (*yyvalp) = a;}
4514 #line 4515 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4515 break;
4516
4517 case 150: /* Annotation: HANDLE IDENTIFIER LPAREN MINUS LONGNUMBER RPAREN */
4518 #line 1342 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4519 {
4520 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4521 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4522 val->negative = !val->negative;
4523 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4524 a->doc_comment = std::move(key->doc_comment);
4525 (*yyvalp) = a;}
4526 #line 4527 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4527 break;
4528
4529 case 151: /* Annotation: HANDLE IDENTIFIER LPAREN RPAREN */
4530 #line 1349 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4531 {
4532 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4533 ASTAnnotation* a = new ASTAnnotation(key, (*yylocp));
4534 a->doc_comment = std::move(key->doc_comment);
4535 (*yyvalp) = a;}
4536 #line 4537 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4537 break;
4538
4539 case 152: /* Block_Statement: Statement */
4540 #line 1360 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4541 {
4542 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4543 if(ASTBlock* existing_block = dynamic_cast<ASTBlock*>(stmt))
4544 {
4545 (*yyvalp) = existing_block;
4546 }
4547 else
4548 {
4549 ASTBlock* block = new ASTBlock((*yylocp));
4550 block->statements.push_back(stmt);
4551 (*yyvalp) = block;
4552 }
4553 }
4554 #line 4555 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4555 break;
4556
4557 case 153: /* Statement: Data SEMICOLON */
4558 #line 1377 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4559 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4560 #line 4561 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4561 break;
4562
4563 case 154: /* Statement: DataTypeDef SEMICOLON */
4564 #line 1378 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4565 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4566 #line 4567 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4567 break;
4568
4569 case 155: /* Statement: Annotated_Enum SEMICOLON */
4570 #line 1379 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4571 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4572 #line 4573 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4573 break;
4574
4575 case 156: /* Statement: Using SEMICOLON */
4576 #line 1380 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4577 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4578 #line 4579 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4579 break;
4580
4581 case 157: /* Statement: Statement_Expression SEMICOLON */
4582 #line 1382 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4583 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4584 #line 4585 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4585 break;
4586
4587 case 158: /* Statement: Statement_Block */
4588 #line 1383 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4589 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4590 #line 4591 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4591 break;
4592
4593 case 159: /* Statement: Statement_If */
4594 #line 1384 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4595 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4596 #line 4597 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4597 break;
4598
4599 case 160: /* Statement: Statement_Switch */
4600 #line 1385 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4601 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4602 #line 4603 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4603 break;
4604
4605 case 161: /* Statement: Statement_For */
4606 #line 1386 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4607 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4608 #line 4609 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4609 break;
4610
4611 case 162: /* Statement: Annotated_Loop */
4612 #line 1387 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4613 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4614 #line 4615 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4615 break;
4616
4617 case 163: /* Statement: Statement_While */
4618 #line 1388 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4619 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4620 #line 4621 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4621 break;
4622
4623 case 164: /* Statement: Statement_Do */
4624 #line 1389 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4625 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4626 #line 4627 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4627 break;
4628
4629 case 165: /* Statement: Statement_Repeat */
4630 #line 1390 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4631 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4632 #line 4633 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4633 break;
4634
4635 case 166: /* Statement: Statement_Return SEMICOLON */
4636 #line 1391 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4637 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4638 #line 4639 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4639 break;
4640
4641 case 167: /* Statement: BREAK SEMICOLON */
4642 #line 1392 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4643 {(*yyvalp) = new ASTStmtBreak(NULL, (*yylocp));}
4644 #line 4645 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4645 break;
4646
4647 case 168: /* Statement: BREAK NUMBER SEMICOLON */
4648 #line 1393 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4649 {
4650 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4651 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4652 (*yyvalp) = new ASTStmtBreak(lit, (*yylocp));
4653 }
4654 #line 4655 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4655 break;
4656
4657 case 169: /* Statement: CONTINUE SEMICOLON */
4658 #line 1398 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4659 {(*yyvalp) = new ASTStmtContinue(NULL, (*yylocp));}
4660 #line 4661 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4661 break;
4662
4663 case 170: /* Statement: CONTINUE NUMBER SEMICOLON */
4664 #line 1399 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4665 {
4666 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4667 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4668 (*yyvalp) = new ASTStmtContinue(lit, (*yylocp));
4669 }
4670 #line 4671 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4671 break;
4672
4673 case 171: /* Statement: SEMICOLON */
4674 #line 1404 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4675 {(*yyvalp) = new ASTStmtEmpty((*yylocp));}
4676 #line 4677 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4677 break;
4678
4679 case 172: /* Statement: Statement_CompileError SEMICOLON */
4680 #line 1405 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4681 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4682 #line 4683 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4683 break;
4684
4685 case 173: /* Statement: Statement_Assert SEMICOLON */
4686 #line 1406 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4687 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4688 #line 4689 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4689 break;
4690
4691 case 174: /* Statement_NoSemicolon: Data */
4692 #line 1411 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4693 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4694 #line 4695 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4695 break;
4696
4697 case 175: /* Statement_NoSemicolon: DataTypeDef */
4698 #line 1412 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4699 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4700 #line 4701 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4701 break;
4702
4703 case 176: /* Statement_NoSemicolon: Annotated_Enum */
4704 #line 1413 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4705 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4706 #line 4707 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4707 break;
4708
4709 case 177: /* Statement_NoSemicolon: Statement_Expression */
4710 #line 1415 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4711 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4712 #line 4713 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4713 break;
4714
4715 case 178: /* Statement_NoSemicolon: Statement_Block */
4716 #line 1416 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4717 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4718 #line 4719 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4719 break;
4720
4721 case 179: /* Statement_NoSemicolon: Statement_If */
4722 #line 1417 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4723 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4724 #line 4725 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4725 break;
4726
4727 case 180: /* Statement_NoSemicolon: Statement_Switch */
4728 #line 1418 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4729 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4730 #line 4731 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4731 break;
4732
4733 case 181: /* Statement_NoSemicolon: Statement_For */
4734 #line 1419 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4735 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4736 #line 4737 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4737 break;
4738
4739 case 182: /* Statement_NoSemicolon: Annotated_Loop */
4740 #line 1420 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4741 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4742 #line 4743 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4743 break;
4744
4745 case 183: /* Statement_NoSemicolon: Statement_While */
4746 #line 1421 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4747 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4748 #line 4749 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4749 break;
4750
4751 case 184: /* Statement_NoSemicolon: Statement_Do */
4752 #line 1422 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4753 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4754 #line 4755 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4755 break;
4756
4757 case 185: /* Statement_NoSemicolon: Statement_Return */
4758 #line 1423 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4759 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4760 #line 4761 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4761 break;
4762
4763 case 186: /* Statement_NoSemicolon: BREAK */
4764 #line 1424 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4765 {(*yyvalp) = new ASTStmtBreak(NULL,(*yylocp));}
4766 #line 4767 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4767 break;
4768
4769 case 187: /* Statement_NoSemicolon: BREAK NUMBER */
4770 #line 1425 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4771 {
4772 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4773 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4774 (*yyvalp) = new ASTStmtBreak(lit, (*yylocp));
4775 }
4776 #line 4777 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4777 break;
4778
4779 case 188: /* Statement_NoSemicolon: CONTINUE */
4780 #line 1430 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4781 {(*yyvalp) = new ASTStmtContinue(NULL,(*yylocp));}
4782 #line 4783 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4783 break;
4784
4785 case 189: /* Statement_NoSemicolon: CONTINUE NUMBER */
4786 #line 1431 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4787 {
4788 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4789 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4790 (*yyvalp) = new ASTStmtContinue(lit, (*yylocp));
4791 }
4792 #line 4793 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4793 break;
4794
4795 case 190: /* Statement_NoSemicolon: %empty */
4796 #line 1436 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4797 {(*yyvalp) = new ASTStmtEmpty((*yylocp));}
4798 #line 4799 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4799 break;
4800
4801 case 191: /* Statement_NoSemicolon: Statement_CompileError */
4802 #line 1437 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4803 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4804 #line 4805 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4805 break;
4806
4807 case 192: /* Statement_Block: LBRACE Statement_Block_List RBRACE */
4808 #line 1441 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4809 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4810 #line 4811 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4811 break;
4812
4813 case 193: /* Statement_Block: LBRACE RBRACE */
4814 #line 1442 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4815 {(*yyvalp) = new ASTBlock((*yylocp));}
4816 #line 4817 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4817 break;
4818
4819 case 194: /* Statement_Block_List: Statement_Block_List Statement */
4820 #line 1446 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4821 {
4822 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4823 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4824 block->statements.push_back(stmt);
4825 (*yyvalp) = block;}
4826 #line 4827 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4827 break;
4828
4829 case 195: /* Statement_Block_List: Statement_Block_List Option */
4830 #line 1451 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4831 {
4832 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4833 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4834 block->options.push_back(option);
4835 (*yyvalp) = block;
4836 if (!block->statements.empty()) {
4837 yywarn("WARNING: Options should come before everything else.");}}
4838 #line 4839 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4839 break;
4840
4841 case 196: /* Statement_Block_List: Statement */
4842 #line 1458 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4843 {
4844 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4845 ASTBlock* block = new ASTBlock((*yylocp));
4846 block->statements.push_back(stmt);
4847 (*yyvalp) = block;}
4848 #line 4849 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4849 break;
4850
4851 case 197: /* Statement_Block_List: Option */
4852 #line 1463 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4853 {
4854 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4855 ASTBlock* block = new ASTBlock((*yylocp));
4856 block->options.push_back(option);
4857 (*yyvalp) = block;}
4858 #line 4859 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4859 break;
4860
4861 case 198: /* Statement_If: IF If_Body */
4862 #line 1471 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4863 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4864 #line 4865 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4865 break;
4866
4867 case 199: /* Statement_If: UNLESS If_Body */
4868 #line 1472 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4869 {
4870 ASTStmtIf* stmt = (ASTStmtIf*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4871 stmt->invert();
4872 (*yyvalp) = stmt;
4873 }
4874 #line 4875 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4875 break;
4876
4877 case 200: /* If_Body: LPAREN Single_Data_req_assign RPAREN Block_Statement */
4878 #line 1480 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4879 {
4880 ASTDataDecl* decl = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4881 ASTBlock* stmt = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4882 (*yyvalp) = new ASTStmtIf(decl, stmt, (*yylocp));}
4883 #line 4884 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4884 break;
4885
4886 case 201: /* If_Body: LPAREN Single_Data_req_assign RPAREN Block_Statement ELSE Block_Statement */
4887 #line 1484 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4888 {
4889 ASTDataDecl* decl = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4890 ASTBlock* thenStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4891 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4892 (*yyvalp) = new ASTStmtIfElse(decl, thenStatement, elseStatement, (*yylocp));}
4893 #line 4894 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4894 break;
4895
4896 case 202: /* If_Body: LPAREN Expression RPAREN Block_Statement */
4897 #line 1489 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4898 {
4899 ASTExpr* cond = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4900 ASTBlock* stmt = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4901 (*yyvalp) = new ASTStmtIf(cond, stmt, (*yylocp));}
4902 #line 4903 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4903 break;
4904
4905 case 203: /* If_Body: LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
4906 #line 1493 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4907 {
4908 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4909 ASTBlock* thenStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4910 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4911 (*yyvalp) = new ASTStmtIfElse(test, thenStatement, elseStatement, (*yylocp));}
4912 #line 4913 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4913 break;
4914
4915 case 204: /* Statement_Switch: SWITCH LPAREN Expression RPAREN LBRACE Statement_Switch_Body RBRACE */
4916 #line 1501 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4917 {
4918 ASTExpr* key = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4919 ASTStmtSwitch* sw = (ASTStmtSwitch*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4920 sw->key = key;
4921 (*yyvalp) = sw;}
4922 #line 4923 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4923 break;
4924
4925 case 205: /* Statement_Switch_Body: Statement_Switch_Body Statement_Switch_Cases Statement_Block_List */
4926 #line 1508 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4927 {
4928 ASTStmtSwitch* sw = (ASTStmtSwitch*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4929 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4930 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4931 cases->block = block;
4932 sw->cases.push_back(cases);
4933 (*yyvalp) = sw;}
4934 #line 4935 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4935 break;
4936
4937 case 206: /* Statement_Switch_Body: Statement_Switch_Cases Statement_Block_List */
4938 #line 1515 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4939 {
4940 ASTStmtSwitch* sw = new ASTStmtSwitch((*yylocp));
4941 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4942 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4943 cases->block = block;
4944 sw->cases.push_back(cases);
4945 (*yyvalp) = sw;}
4946 #line 4947 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4947 break;
4948
4949 case 207: /* Statement_Switch_Cases: Statement_Switch_Cases CASE Expression_Constant COLON */
4950 #line 1525 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4951 {
4952 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4953 ASTExprConst* key = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4954 cases->cases.push_back(key);
4955 (*yyvalp) = cases;}
4956 #line 4957 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4957 break;
4958
4959 case 208: /* Statement_Switch_Cases: Statement_Switch_Cases DEFAULT COLON */
4960 #line 1530 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4961 {
4962 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4963 cases->isDefault = true;
4964 (*yyvalp) = cases;}
4965 #line 4966 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4966 break;
4967
4968 case 209: /* Statement_Switch_Cases: Statement_Switch_Cases CASE Expression_Const_Range COLON */
4969 #line 1534 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4970 {
4971 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4972 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4973 cases->ranges.push_back(range);
4974 (*yyvalp) = cases;}
4975 #line 4976 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4976 break;
4977
4978 case 210: /* Statement_Switch_Cases: Statement_Switch_Cases CASE CASESTRING COLON */
4979 #line 1539 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4980 {
4981 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4982 ASTStringLiteral* key = new ASTStringLiteral(*rawstring);
4983 delete rawstring;
4984 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4985 cases->str_cases.push_back(key);
4986 (*yyvalp) = cases;}
4987 #line 4988 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4988 break;
4989
4990 case 211: /* Statement_Switch_Cases: CASE Expression_Constant COLON */
4991 #line 1546 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4992 {
4993 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
4994 ASTExprConst* key = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4995 cases->cases.push_back(key);
4996 (*yyvalp) = cases;}
4997 #line 4998 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4998 break;
4999
5000 case 212: /* Statement_Switch_Cases: CASE Expression_Const_Range COLON */
5001 #line 1551 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5002 {
5003 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
5004 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5005 cases->ranges.push_back(range);
5006 (*yyvalp) = cases;}
5007 #line 5008 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5008 break;
5009
5010 case 213: /* Statement_Switch_Cases: CASE CASESTRING COLON */
5011 #line 1556 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5012 {
5013 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
5014 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5015 ASTStringLiteral* key = new ASTStringLiteral(*rawstring);
5016 delete rawstring;
5017 cases->str_cases.push_back(key);
5018 (*yyvalp) = cases;}
5019 #line 5020 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5020 break;
5021
5022 case 214: /* Statement_Switch_Cases: DEFAULT COLON */
5023 #line 1563 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5024 {
5025 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
5026 cases->isDefault = true;
5027 (*yyvalp) = cases;}
5028 #line 5029 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5029 break;
5030
5031 case 215: /* Statement_For: Statement_For_Standard */
5032 #line 1570 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5033 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5034 #line 5035 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5035 break;
5036
5037 case 216: /* Statement_For: Statement_For_Each */
5038 #line 1571 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5039 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5040 #line 5041 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5041 break;
5042
5043 case 217: /* Statement_CommaList: Statement_CommaList COMMA Statement_NoSemicolon */
5044 #line 1575 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5045 {
5046 ASTNodeList<ASTStmt>* list = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5047 list->push((ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5048 (*yyvalp) = list;
5049 }
5050 #line 5051 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5051 break;
5052
5053 case 218: /* Statement_CommaList: Statement_NoSemicolon */
5054 #line 1580 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5055 {
5056 ASTNodeList<ASTStmt>* list = new ASTNodeList<ASTStmt>();
5057 list->push((ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5058 (*yyvalp) = list;
5059 }
5060 #line 5061 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5061 break;
5062
5063 case 219: /* Statement_For_Standard: FOR LPAREN Statement_NoSemicolon SEMICOLON Expression SEMICOLON Statement_CommaList RPAREN Block_Statement */
5064 #line 1593 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5065 {
5066 ASTStmt* setup = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5067 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5068 ASTNodeList<ASTStmt>* increments = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5069 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5070 (*yyvalp) = new ASTStmtFor(setup, test, increments, body, nullptr, (*yylocp));
5071 }
5072 #line 5073 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5073 break;
5074
5075 case 220: /* Statement_For_Standard: FOR LPAREN Statement_NoSemicolon SEMICOLON Expression SEMICOLON Statement_CommaList RPAREN Block_Statement ELSE Block_Statement */
5076 #line 1605 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5077 {
5078 ASTStmt* setup = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-8)].yystate.yysemantics.yyval;
5079 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5080 ASTNodeList<ASTStmt>* increments = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5081 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5082 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5083 (*yyvalp) = new ASTStmtFor(setup, test, increments, body, elseStatement, (*yylocp));
5084 }
5085 #line 5086 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5086 break;
5087
5088 case 221: /* Statement_For_Each: FOR LPAREN Identifier Token_In Expression RPAREN Block_Statement */
5089 #line 1618 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5090 {
5091 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5092 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5093 ASTStmt* body = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5094
5095 (*yyvalp) = new ASTStmtForEach(iden, expr, body, nullptr, (*yylocp));
5096 }
5097 #line 5098 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5098 break;
5099
5100 case 222: /* Statement_For_Each: FOR LPAREN Identifier Token_In Expression RPAREN Block_Statement ELSE Block_Statement */
5101 #line 1627 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5102 {
5103 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5104 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5105 ASTStmt* body = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5106 ASTStmt* elseblock = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5107
5108 (*yyvalp) = new ASTStmtForEach(iden, expr, body, elseblock, (*yylocp));
5109 }
5110 #line 5111 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5111 break;
5112
5113 case 223: /* Annotated_Loop: Annotation_List Statement_Loop */
5114 #line 1638 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5115 {
5116 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5117 ASTStmtRangeLoop* loop = (ASTStmtRangeLoop*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5118 handle_annotations(list, [&](AnnotData& data)
5119 {
5120 auto& key = data.key;
5121 if(key == "AlwaysRunEndpoint")
5122 {
5123 if(annot_type_check(ANNTY_STR, data))
5124 {
5125 if(data.strval == "off")
5126 loop->overflow = ASTStmtRangeLoop::OVERFLOW_ALLOW;
5127 else if(data.strval == "int")
5128 loop->overflow = ASTStmtRangeLoop::OVERFLOW_INT;
5129 else if(data.strval == "long" || data.strval == "float")
5130 loop->overflow = ASTStmtRangeLoop::OVERFLOW_LONG;
5131 else annot_errstr(annot_err_header+": '@"+key+"' must be"
5132 " exactly 'off','int','float', or 'long', NOT '" + data.strval + "'.");
5133 }
5134 return true;
5135 }
5136 return false;
5137 });
5138 (*yyvalp) = loop;}
5139 #line 5140 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5140 break;
5141
5142 case 224: /* Annotated_Loop: Statement_Loop */
5143 #line 1662 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5144 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5145 #line 5146 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5146 break;
5147
5148 case 225: /* Statement_Loop: Statement_Loop_Inf */
5149 #line 1666 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5150 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5151 #line 5152 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5152 break;
5153
5154 case 226: /* Statement_Loop: Statement_Loop_Range */
5155 #line 1667 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5156 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5157 #line 5158 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5158 break;
5159
5160 case 227: /* Statement_Loop_Inf: LOOP LPAREN RPAREN Block_Statement */
5161 #line 1672 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5162 {
5163 ASTExpr* test = new ASTBoolLiteral(true, (*yylocp));
5164 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5165 (*yyvalp) = new ASTStmtWhile(test,body,nullptr,(*yylocp));
5166 }
5167 #line 5168 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5168 break;
5169
5170 case 228: /* Statement_Loop_Range: Statement_Loop_Range_Base ELSE Block_Statement */
5171 #line 1680 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5172 {
5173 ASTStmtRangeLoop* loop = (ASTStmtRangeLoop*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5174 ASTStmt* elseblock = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5175 loop->elseBlock = elseblock;
5176 (*yyvalp) = loop;
5177 }
5178 #line 5179 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5179 break;
5180
5181 case 229: /* Statement_Loop_Range: Statement_Loop_Range_Base */
5182 #line 1686 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5183 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5184 #line 5185 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5185 break;
5186
5187 case 230: /* Statement_Loop_Range_Base: LOOP LPAREN DataType IDENTIFIER Token_In Expression_Range COMMA Expression RPAREN Block_Statement */
5188 #line 1691 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5189 {
5190 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-7)].yystate.yysemantics.yyval;
5191 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5192 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5193 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5194 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5195 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5196 }
5197 #line 5198 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5198 break;
5199
5200 case 231: /* Statement_Loop_Range_Base: LOOP LPAREN IDENTIFIER Token_In Expression_Range COMMA Expression RPAREN Block_Statement */
5201 #line 1700 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5202 {
5203 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5204 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5205 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5206 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5207 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5208 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5209 }
5210 #line 5211 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5211 break;
5212
5213 case 232: /* Statement_Loop_Range_Base: LOOP LPAREN Expression_Range COMMA Expression RPAREN Block_Statement */
5214 #line 1709 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5215 {
5216 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5217 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5218 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5219 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5220 (*yyvalp) = new ASTStmtRangeLoop(type, new ASTString("__LOOP_ITER", (*yylocp)), range, incr, body, (*yylocp));
5221 }
5222 #line 5223 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5223 break;
5224
5225 case 233: /* Statement_Loop_Range_Base: LOOP LPAREN DataType IDENTIFIER Token_In Expression_Range RPAREN Block_Statement */
5226 #line 1717 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5227 {
5228 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-5)].yystate.yysemantics.yyval;
5229 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5230 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5231 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5232 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5233 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5234 }
5235 #line 5236 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5236 break;
5237
5238 case 234: /* Statement_Loop_Range_Base: LOOP LPAREN IDENTIFIER Token_In Expression_Range RPAREN Block_Statement */
5239 #line 1726 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5240 {
5241 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5242 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5243 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5244 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5245 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5246 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5247 }
5248 #line 5249 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5249 break;
5250
5251 case 235: /* Statement_Loop_Range_Base: LOOP LPAREN Expression_Range RPAREN Block_Statement */
5252 #line 1735 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5253 {
5254 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5255 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5256 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5257 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5258 (*yyvalp) = new ASTStmtRangeLoop(type, new ASTString("__LOOP_ITER", (*yylocp)), range, incr, body, (*yylocp));
5259 }
5260 #line 5261 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5261 break;
5262
5263 case 236: /* Token_In: COLON */
5264 #line 1745 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5265 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5266 #line 5267 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5267 break;
5268
5269 case 237: /* Token_In: IN */
5270 #line 1746 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5271 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5272 #line 5273 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5273 break;
5274
5275 case 238: /* Statement_While: WHILE LPAREN Expression RPAREN Block_Statement */
5276 #line 1750 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5277 {
5278 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5279 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5280 (*yyvalp) = new ASTStmtWhile(test, body, nullptr, (*yylocp));}
5281 #line 5282 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5282 break;
5283
5284 case 239: /* Statement_While: WHILE LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
5285 #line 1754 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5286 {
5287 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5288 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5289 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5290 (*yyvalp) = new ASTStmtWhile(test, body, elseblock, (*yylocp));}
5291 #line 5292 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5292 break;
5293
5294 case 240: /* Statement_While: UNTIL LPAREN Expression RPAREN Block_Statement */
5295 #line 1759 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5296 {
5297 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5298 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5299 ASTStmtWhile* stmt = new ASTStmtWhile(test, body, nullptr, (*yylocp));
5300 stmt->invert();
5301 (*yyvalp) = stmt;}
5302 #line 5303 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5303 break;
5304
5305 case 241: /* Statement_While: UNTIL LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
5306 #line 1765 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5307 {
5308 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5309 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5310 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5311 ASTStmtWhile* stmt = new ASTStmtWhile(test, body, elseblock, (*yylocp));
5312 stmt->invert();
5313 (*yyvalp) = stmt;}
5314 #line 5315 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5315 break;
5316
5317 case 242: /* Statement_Do: DO Block_Statement WHILE LPAREN Expression RPAREN */
5318 #line 1775 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5319 {
5320 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5321 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5322 (*yyvalp) = new ASTStmtDo(test, body, nullptr, (*yylocp));}
5323 #line 5324 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5324 break;
5325
5326 case 243: /* Statement_Do: DO Block_Statement WHILE LPAREN Expression RPAREN ELSE Block_Statement */
5327 #line 1779 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5328 {
5329 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5330 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5331 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5332 (*yyvalp) = new ASTStmtDo(test, body, elseblock, (*yylocp));}
5333 #line 5334 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5334 break;
5335
5336 case 244: /* Statement_Do: DO Block_Statement UNTIL LPAREN Expression RPAREN */
5337 #line 1784 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5338 {
5339 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5340 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5341 ASTStmtDo* stmt = new ASTStmtDo(test, body, nullptr, (*yylocp));
5342 stmt->invert();
5343 (*yyvalp) = stmt;}
5344 #line 5345 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5345 break;
5346
5347 case 245: /* Statement_Do: DO Block_Statement UNTIL LPAREN Expression RPAREN ELSE Block_Statement */
5348 #line 1790 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5349 {
5350 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5351 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5352 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5353 ASTStmtDo* stmt = new ASTStmtDo(test, body, elseblock, (*yylocp));
5354 stmt->invert();
5355 (*yyvalp) = stmt;}
5356 #line 5357 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5357 break;
5358
5359 case 246: /* Statement_Repeat: REPEAT LPAREN Expression_Constant RPAREN Statement */
5360 #line 1800 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5361 {
5362 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5363 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5364 (*yyvalp) = new ASTStmtRepeat(expr, body, (*yylocp));}
5365 #line 5366 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5366 break;
5367
5368 case 247: /* Statement_Return: RETURN Expression */
5369 #line 1807 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5370 {
5371 ASTExpr* value = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5372 (*yyvalp) = new ASTStmtReturnVal(value, (*yylocp));}
5373 #line 5374 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5374 break;
5375
5376 case 248: /* Statement_Return: RETURN */
5377 #line 1810 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5378 {(*yyvalp) = new ASTStmtReturn((*yylocp));}
5379 #line 5380 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5380 break;
5381
5382 case 249: /* Statement_CompileError: EXPECTERROR LPAREN Expression_Constant RPAREN Statement_NoSemicolon */
5383 #line 1814 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5384 {
5385 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5386 ASTStmt* statement = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5387 statement->compileErrorCatches.push_back(errorId);
5388 (*yyvalp) = statement;}
5389 #line 5390 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5390 break;
5391
5392 case 250: /* Annotated_Enum: Annotation_List DataEnum */
5393 #line 1822 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5394 {
5395 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5396 ASTDataEnum* en = dynamic_cast<ASTDataEnum*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5397 ASTCustomDataTypeDef* tdef = dynamic_cast<ASTCustomDataTypeDef*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5398 if(tdef) en = tdef->definition.get();
5399 if(tdef) tdef->doc_comment = std::move(list->doc_comment);
5400 handle_annotations(list, [&](AnnotData& data)
5401 {
5402 auto& key = data.key;
5403 if(key == "Increment")
5404 {
5405 if(en->getBitMode() != ASTDataEnum::BIT_NONE)
5406 annot_incompatible("Increment", "Bitflags");
5407 else if(annot_type_check(ANNTY_INT, data))
5408 en->increment_val = data.intval;
5409 return true;
5410 }
5411 else if(key == "Bitflags")
5412 {
5413 if(en->increment_val)
5414 annot_incompatible("Bitflags", "Increment");
5415 else if(annot_type_check(ANNTY_STR, data))
5416 {
5417 if(data.strval == "int")
5418 en->setBitMode(ASTDataEnum::BIT_INT);
5419 else if(data.strval == "long")
5420 en->setBitMode(ASTDataEnum::BIT_LONG);
5421 }
5422 return true;
5423 }
5424 return false;
5425 });
5426 (*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5427 #line 5428 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5428 break;
5429
5430 case 251: /* Annotated_Enum: DataEnum */
5431 #line 1855 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5432 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5433 #line 5434 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5434 break;
5435
5436 case 252: /* DataEnum: ENUM LBRACE Enum_Block Trail_Comma_RBrace */
5437 #line 1858 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5438 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
5439 #line 5440 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5440 break;
5441
5442 case 253: /* DataEnum: ENUM ASSIGN DataType LBRACE Enum_Block Trail_Comma_RBrace */
5443 #line 1859 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5444 {
5445 ASTDataEnum* list = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5446 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5447 type->constant_ = 1; //force to be constant, skip `const const` errors
5448 list->baseType = type;
5449 list->location = (*yylocp);
5450 (*yyvalp) = list;}
5451 #line 5452 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5452 break;
5453
5454 case 254: /* DataEnum: ENUM IDENTIFIER LBRACE Enum_Block Trail_Comma_RBrace */
5455 #line 1866 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5456 {
5457 ASTDataEnum* en = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5458 en->location = (*yylocp);
5459 ASTString* identifier = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5460 auto custom_typedef = new ASTCustomDataTypeDef(NULL, identifier, en, (*yylocp));
5461 custom_typedef->doc_comment = std::move(identifier->doc_comment);
5462 (*yyvalp) = custom_typedef;}
5463 #line 5464 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5464 break;
5465
5466 case 255: /* Enum_Block: Enum_Block COMMA Data_Element */
5467 #line 1875 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5468 {
5469 ASTDataEnum* list = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5470 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5471 list->addDeclaration(element);
5472 (*yyvalp) = list;}
5473 #line 5474 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5474 break;
5475
5476 case 256: /* Enum_Block: Data_Element */
5477 #line 1880 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5478 {
5479 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5480 ASTDataEnum* list = new ASTDataEnum((*yylocp));
5481 list->addDeclaration(element);
5482 (*yyvalp) = list;}
5483 #line 5484 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5484 break;
5485
5486 case 257: /* ScopeRes: SCOPERES */
5487 #line 1932 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5488 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5489 #line 5490 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5490 break;
5491
5492 case 258: /* Identifier_List: Mixed_Identifier_List */
5493 #line 1937 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5494 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5495 #line 5496 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5496 break;
5497
5498 case 259: /* Identifier_List: idlist_scopres */
5499 #line 1938 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5500 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5501 #line 5502 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5502 break;
5503
5504 case 260: /* Identifier_List: idlist_dot */
5505 #line 1939 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5506 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5507 #line 5508 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5508 break;
5509
5510 case 261: /* Identifier_List: Ambigious_Iden_List */
5511 #line 1940 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5512 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5513 #line 5514 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5514 break;
5515
5516 case 262: /* Scoperes_Identifier_List: idlist_scopres */
5517 #line 1944 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5518 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5519 #line 5520 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5520 break;
5521
5522 case 263: /* Scoperes_Identifier_List: Ambigious_Iden_List */
5523 #line 1945 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5524 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5525 #line 5526 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5526 break;
5527
5528 case 264: /* Mixed_Identifier_List: Mixed_Identifier_List DOT Identifier */
5529 #line 1954 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5530 {
5531 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5532 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5533 identifier->components.push_back(name->getValue());
5534 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5535 identifier->delimiters.push_back(".");
5536 identifier->location = (*yylocp);
5537 (*yyvalp) = identifier;}
5538 #line 5539 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5539 break;
5540
5541 case 265: /* Mixed_Identifier_List: idlist_scopres DOT Identifier */
5542 #line 1962 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5543 {
5544 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5545 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5546 identifier->components.push_back(name->getValue());
5547 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5548 identifier->delimiters.push_back(".");
5549 identifier->location = (*yylocp);
5550 (*yyvalp) = identifier;}
5551 #line 5552 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5552 break;
5553
5554 case 266: /* Mixed_Identifier_List: Mixed_Identifier_List ScopeRes Identifier */
5555 #line 1970 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5556 {
5557 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5558 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5559 identifier->components.push_back(name->getValue());
5560 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5561 identifier->delimiters.push_back("::");
5562 identifier->location = (*yylocp);
5563 (*yyvalp) = identifier;}
5564 #line 5565 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5565 break;
5566
5567 case 267: /* Mixed_Identifier_List: idlist_dot ScopeRes Identifier */
5568 #line 1978 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5569 {
5570 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5571 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5572 identifier->components.push_back(name->getValue());
5573 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5574 identifier->delimiters.push_back("::");
5575 identifier->location = (*yylocp);
5576 (*yyvalp) = identifier;}
5577 #line 5578 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5578 break;
5579
5580 case 268: /* idlist_scopres: idlist_scopres ScopeRes Identifier */
5581 #line 1989 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5582 {
5583 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5584 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5585 identifier->components.push_back(name->getValue());
5586 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5587 identifier->delimiters.push_back("::");
5588 identifier->location = (*yylocp);
5589 (*yyvalp) = identifier;}
5590 #line 5591 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5591 break;
5592
5593 case 269: /* idlist_scopres: Ambigious_Iden_List ScopeRes Identifier */
5594 #line 1997 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5595 {
5596 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5597 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5598 identifier->components.push_back(name->getValue());
5599 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5600 identifier->delimiters.push_back("::");
5601 identifier->location = (*yylocp);
5602 (*yyvalp) = identifier;}
5603 #line 5604 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5604 break;
5605
5606 case 270: /* idlist_scopres: ScopeRes Ambigious_Iden_List */
5607 #line 2005 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5608 {
5609 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5610 identifier->noUsing = true;
5611 (*yyvalp) = identifier;}
5612 #line 5613 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5613 break;
5614
5615 case 271: /* idlist_dot: idlist_dot DOT Identifier */
5616 #line 2012 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5617 {
5618 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5619 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5620 identifier->components.push_back(name->getValue());
5621 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5622 identifier->delimiters.push_back(".");
5623 identifier->location = (*yylocp);
5624 (*yyvalp) = identifier;}
5625 #line 5626 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5626 break;
5627
5628 case 272: /* idlist_dot: Ambigious_Iden_List DOT Identifier */
5629 #line 2020 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5630 {
5631 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5632 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5633 identifier->components.push_back(name->getValue());
5634 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5635 identifier->delimiters.push_back(".");
5636 identifier->location = (*yylocp);
5637 (*yyvalp) = identifier;}
5638 #line 5639 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5639 break;
5640
5641 case 273: /* Ambigious_Iden_List: Identifier */
5642 #line 2031 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5643 {
5644 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5645 ASTExprIdentifier* identifier = new ASTExprIdentifier(std::shared_ptr<ASTString>(name), (*yylocp));
5646 identifier->doc_comment = std::move(name->doc_comment);
5647 if (!first_identifier_for_line) first_identifier_for_line = identifier;
5648 (*yyvalp) = identifier;}
5649 #line 5650 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5650 break;
5651
5652 case 274: /* Identifier: IDENTIFIER */
5653 #line 2040 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5654 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5655 #line 5656 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5656 break;
5657
5658 case 275: /* Func_Left: Expr_Arrow */
5659 #line 2044 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5660 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5661 #line 5662 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5662 break;
5663
5664 case 276: /* Func_Left: Identifier_List */
5665 #line 2045 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5666 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5667 #line 5668 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5668 break;
5669
5670 case 277: /* Function_Call: NEW Identifier_List LPAREN RPAREN */
5671 #line 2049 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5672 {
5673 ASTExprCall* call = new ASTExprCall((*yylocp));
5674 call->setConstructor(true);
5675 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5676 call->left = left;
5677 call->location = (*yylocp);
5678 (*yyvalp) = call;}
5679 #line 5680 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5680 break;
5681
5682 case 278: /* Function_Call: NEW Identifier_List LPAREN Function_Call_Parameters RPAREN */
5683 #line 2056 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5684 {
5685 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5686 call->setConstructor(true);
5687 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5688 call->left = left;
5689 call->location = (*yylocp);
5690 (*yyvalp) = call;}
5691 #line 5692 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5692 break;
5693
5694 case 279: /* Function_Call: Func_Left LPAREN RPAREN */
5695 #line 2063 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5696 {
5697 ASTExprCall* call = new ASTExprCall((*yylocp));
5698 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5699 call->left = left;
5700 call->location = (*yylocp);
5701 (*yyvalp) = call;}
5702 #line 5703 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5703 break;
5704
5705 case 280: /* Function_Call: Func_Left LPAREN Function_Call_Parameters RPAREN */
5706 #line 2069 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5707 {
5708 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5709 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5710 call->left = left;
5711 call->location = (*yylocp);
5712 (*yyvalp) = call;}
5713 #line 5714 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5714 break;
5715
5716 case 281: /* Function_Call_Parameters: Function_Call_Parameters COMMA Expression */
5717 #line 2078 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5718 {
5719 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5720 ASTExpr* e = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5721 call->parameters.push_back(e);
5722 call->location = (*yylocp);
5723 (*yyvalp) = call;}
5724 #line 5725 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5725 break;
5726
5727 case 282: /* Function_Call_Parameters: Expression */
5728 #line 2084 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5729 {
5730 ASTExprCall* call = new ASTExprCall((*yylocp));
5731 ASTExpr* e = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5732 call->parameters.push_back(e);
5733 (*yyvalp) = call;}
5734 #line 5735 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5735 break;
5736
5737 case 283: /* Expr_1: Identifier_List */
5738 #line 2096 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5739 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5740 #line 5741 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5741 break;
5742
5743 case 284: /* Expr_1: Literal */
5744 #line 2097 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5745 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5746 #line 5747 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5747 break;
5748
5749 case 285: /* Expr_1: LPAREN Expression RPAREN */
5750 #line 2098 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5751 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
5752 #line 5753 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5753 break;
5754
5755 case 286: /* Expr_2: Expr_1 */
5756 #line 2100 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5757 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5758 #line 5759 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5759 break;
5760
5761 case 287: /* Expr_2: LT DataType GT Expr_2 */
5762 #line 2110 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5763 {
5764 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5765 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5766 ASTExprCast* cast = new ASTExprCast(type, expr, (*yylocp));
5767 (*yyvalp) = cast;}
5768 #line 5769 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5769 break;
5770
5771 case 288: /* Expr_Arrow: Expr_3 ARROW IDENTIFIER */
5772 #line 2118 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5773 {
5774 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5775 ASTString* right = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5776 (*yyvalp) = new ASTExprArrow(left, right, (*yylocp));}
5777 #line 5778 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5778 break;
5779
5780 case 289: /* Expr_3: Expr_2 */
5781 #line 2124 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5782 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5783 #line 5784 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5784 break;
5785
5786 case 290: /* Expr_3: Expr_3 INCREMENT */
5787 #line 2126 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5788 {(*yyvalp) = new ASTExprIncrement(false, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));}
5789 #line 5790 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5790 break;
5791
5792 case 291: /* Expr_3: Expr_3 DECREMENT */
5793 #line 2128 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5794 {(*yyvalp) = new ASTExprDecrement(false, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));}
5795 #line 5796 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5796 break;
5797
5798 case 292: /* Expr_3: Function_Call */
5799 #line 2130 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5800 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5801 #line 5802 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5802 break;
5803
5804 case 293: /* Expr_3: Expr_3 LBRACKET Expression RBRACKET */
5805 #line 2132 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5806 {
5807 (*yyvalp) = new ASTExprIndex((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));;}
5808 #line 5809 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5809 break;
5810
5811 case 294: /* Expr_3: Expr_Arrow */
5812 #line 2135 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5813 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5814 #line 5815 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5815 break;
5816
5817 case 295: /* Expr_4: Expr_3 */
5818 #line 2138 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5819 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5820 #line 5821 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5821 break;
5822
5823 case 296: /* Expr_4: INCREMENT Expr_4 */
5824 #line 2140 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5825 {(*yyvalp) = new ASTExprIncrement(true, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5826 #line 5827 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5827 break;
5828
5829 case 297: /* Expr_4: DECREMENT Expr_4 */
5830 #line 2142 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5831 {(*yyvalp) = new ASTExprDecrement(true, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5832 #line 5833 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5833 break;
5834
5835 case 298: /* Expr_4: MINUS Expr_4 */
5836 #line 2144 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5837 {(*yyvalp) = new ASTExprNegate((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5838 #line 5839 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5839 break;
5840
5841 case 299: /* Expr_4: NOT Expr_4 */
5842 #line 2146 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5843 {(*yyvalp) = new ASTExprNot((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5844 #line 5845 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5845 break;
5846
5847 case 300: /* Expr_4: BITNOT Expr_4 */
5848 #line 2148 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5849 {(*yyvalp) = new ASTExprBitNot((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5850 #line 5851 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5851 break;
5852
5853 case 301: /* Expr_5: Expr_4 */
5854 #line 2151 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5855 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5856 #line 5857 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5857 break;
5858
5859 case 302: /* Expr_5: Expr_5 EXPN Expr_4 */
5860 #line 2153 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5861 {(*yyvalp) = new ASTExprExpn((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5862 #line 5863 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5863 break;
5864
5865 case 303: /* Expr_6: Expr_5 */
5866 #line 2156 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5867 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5868 #line 5869 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5869 break;
5870
5871 case 304: /* Expr_6: Expr_6 TIMES Expr_5 */
5872 #line 2158 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5873 {(*yyvalp) = new ASTExprTimes((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5874 #line 5875 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5875 break;
5876
5877 case 305: /* Expr_6: Expr_6 DIVIDE Expr_5 */
5878 #line 2160 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5879 {(*yyvalp) = new ASTExprDivide((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5880 #line 5881 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5881 break;
5882
5883 case 306: /* Expr_6: Expr_6 MODULO Expr_5 */
5884 #line 2162 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5885 {(*yyvalp) = new ASTExprModulo((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5886 #line 5887 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5887 break;
5888
5889 case 307: /* Expr_7: Expr_6 */
5890 #line 2165 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5891 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5892 #line 5893 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5893 break;
5894
5895 case 308: /* Expr_7: Expr_7 PLUS Expr_6 */
5896 #line 2167 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5897 {(*yyvalp) = new ASTExprPlus((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5898 #line 5899 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5899 break;
5900
5901 case 309: /* Expr_7: Expr_7 MINUS Expr_6 */
5902 #line 2169 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5903 {(*yyvalp) = new ASTExprMinus((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5904 #line 5905 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5905 break;
5906
5907 case 310: /* Expr_8: Expr_7 */
5908 #line 2172 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5909 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5910 #line 5911 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5911 break;
5912
5913 case 311: /* Expr_8: Expr_8 LSHIFT Expr_7 */
5914 #line 2174 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5915 {(*yyvalp) = new ASTExprLShift((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5916 #line 5917 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5917 break;
5918
5919 case 312: /* Expr_8: Expr_8 RSHIFT Expr_7 */
5920 #line 2176 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5921 {(*yyvalp) = new ASTExprRShift((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5922 #line 5923 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5923 break;
5924
5925 case 313: /* Expr_9: Expr_8 */
5926 #line 2179 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5927 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5928 #line 5929 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5929 break;
5930
5931 case 314: /* Expr_9: Expr_9 LT Expr_8 */
5932 #line 2181 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5933 {(*yyvalp) = new ASTExprLT((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5934 #line 5935 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5935 break;
5936
5937 case 315: /* Expr_9: Expr_9 LE Expr_8 */
5938 #line 2183 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5939 {(*yyvalp) = new ASTExprLE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5940 #line 5941 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5941 break;
5942
5943 case 316: /* Expr_9: Expr_9 GT Expr_8 */
5944 #line 2185 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5945 {(*yyvalp) = new ASTExprGT((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5946 #line 5947 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5947 break;
5948
5949 case 317: /* Expr_9: Expr_9 GE Expr_8 */
5950 #line 2187 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5951 {(*yyvalp) = new ASTExprGE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5952 #line 5953 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5953 break;
5954
5955 case 318: /* Expr_10: Expr_9 */
5956 #line 2190 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5957 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5958 #line 5959 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5959 break;
5960
5961 case 319: /* Expr_10: Expr_10 EQ Expr_9 */
5962 #line 2192 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5963 {(*yyvalp) = new ASTExprEQ((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5964 #line 5965 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5965 break;
5966
5967 case 320: /* Expr_10: Expr_10 NE Expr_9 */
5968 #line 2194 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5969 {(*yyvalp) = new ASTExprNE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5970 #line 5971 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5971 break;
5972
5973 case 321: /* Expr_10: Expr_10 APPXEQUAL Expr_9 */
5974 #line 2196 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5975 {(*yyvalp) = new ASTExprAppxEQ((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5976 #line 5977 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5977 break;
5978
5979 case 322: /* Expr_10: Expr_10 XOR Expr_9 */
5980 #line 2198 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5981 {(*yyvalp) = new ASTExprXOR((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5982 #line 5983 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5983 break;
5984
5985 case 323: /* Expr_11: Expr_10 */
5986 #line 2201 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5987 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5988 #line 5989 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5989 break;
5990
5991 case 324: /* Expr_11: Expr_11 BITAND Expr_10 */
5992 #line 2203 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5993 {(*yyvalp) = new ASTExprBitAnd((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5994 #line 5995 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5995 break;
5996
5997 case 325: /* Expr_12: Expr_11 */
5998 #line 2206 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5999 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6000 #line 6001 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6001 break;
6002
6003 case 326: /* Expr_12: Expr_12 BITXOR Expr_11 */
6004 #line 2208 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6005 {(*yyvalp) = new ASTExprBitXor((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6006 #line 6007 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6007 break;
6008
6009 case 327: /* Expr_13: Expr_12 */
6010 #line 2211 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6011 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6012 #line 6013 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6013 break;
6014
6015 case 328: /* Expr_13: Expr_13 BITOR Expr_12 */
6016 #line 2213 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6017 {(*yyvalp) = new ASTExprBitOr((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6018 #line 6019 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6019 break;
6020
6021 case 329: /* Expr_14: Expr_13 */
6022 #line 2216 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6023 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6024 #line 6025 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6025 break;
6026
6027 case 330: /* Expr_14: Expr_14 AND Expr_13 */
6028 #line 2218 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6029 {(*yyvalp) = new ASTExprAnd((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6030 #line 6031 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6031 break;
6032
6033 case 331: /* Expr_15: Expr_14 */
6034 #line 2221 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6035 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6036 #line 6037 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6037 break;
6038
6039 case 332: /* Expr_15: Expr_15 OR Expr_14 */
6040 #line 2223 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6041 {(*yyvalp) = new ASTExprOr((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6042 #line 6043 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6043 break;
6044
6045 case 333: /* Expr_16: Expr_15 */
6046 #line 2226 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6047 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6048 #line 6049 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6049 break;
6050
6051 case 334: /* Expr_16: Expr_15 QMARK Expr_16 COLON Expr_16 */
6052 #line 2229 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6053 {
6054 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
6055 ASTExpr* middle = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6056 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6057 (*yyvalp) = new ASTTernaryExpr(left, middle, right, (*yylocp));
6058 }
6059 #line 6060 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6060 break;
6061
6062 case 335: /* Expr_17: Expr_16 */
6063 #line 2237 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6064 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6065 #line 6066 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6066 break;
6067
6068 case 336: /* Expr_17: DELETE Expr_17 */
6069 #line 2238 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6070 {
6071 ASTExprDelete* del = new ASTExprDelete((*yylocp));
6072 ASTExpr* operand = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6073 del->operand = operand;
6074 (*yyvalp) = del;}
6075 #line 6076 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6076 break;
6077
6078 case 337: /* Expr_18: Expr_17 */
6079 #line 2245 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6080 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6081 #line 6082 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6082 break;
6083
6084 case 338: /* Expr_18: Expr_17 ASSIGN Expr_18 */
6085 #line 2247 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6086 {(*yyvalp) = new ASTExprAssign((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6087 #line 6088 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6088 break;
6089
6090 case 339: /* Expr_18: Expr_17 PLUSASSIGN Expr_18 */
6091 #line 2249 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6092 {
6093 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6094 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6095 (*yyvalp) = new ASTExprAssign(left, new ASTExprPlus(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6096 #line 6097 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6097 break;
6098
6099 case 340: /* Expr_18: Expr_17 MINUSASSIGN Expr_18 */
6100 #line 2254 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6101 {
6102 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6103 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6104 (*yyvalp) = new ASTExprAssign(left, new ASTExprMinus(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6105 #line 6106 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6106 break;
6107
6108 case 341: /* Expr_18: Expr_17 TIMESASSIGN Expr_18 */
6109 #line 2259 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6110 {
6111 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6112 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6113 (*yyvalp) = new ASTExprAssign(left, new ASTExprTimes(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6114 #line 6115 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6115 break;
6116
6117 case 342: /* Expr_18: Expr_17 DIVIDEASSIGN Expr_18 */
6118 #line 2264 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6119 {
6120 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6121 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6122 (*yyvalp) = new ASTExprAssign(left, new ASTExprDivide(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6123 #line 6124 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6124 break;
6125
6126 case 343: /* Expr_18: Expr_17 MODULOASSIGN Expr_18 */
6127 #line 2269 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6128 {
6129 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6130 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6131 (*yyvalp) = new ASTExprAssign(left, new ASTExprModulo(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6132 #line 6133 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6133 break;
6134
6135 case 344: /* Expr_18: Expr_17 LSHIFTASSIGN Expr_18 */
6136 #line 2274 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6137 {
6138 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6139 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6140 (*yyvalp) = new ASTExprAssign(left, new ASTExprLShift(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6141 #line 6142 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6142 break;
6143
6144 case 345: /* Expr_18: Expr_17 RSHIFTASSIGN Expr_18 */
6145 #line 2279 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6146 {
6147 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6148 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6149 (*yyvalp) = new ASTExprAssign(left, new ASTExprRShift(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6150 #line 6151 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6151 break;
6152
6153 case 346: /* Expr_18: Expr_17 BITANDASSIGN Expr_18 */
6154 #line 2284 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6155 {
6156 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6157 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6158 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitAnd(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6159 #line 6160 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6160 break;
6161
6162 case 347: /* Expr_18: Expr_17 BITNOTASSIGN Expr_18 */
6163 #line 2290 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6164 {
6165 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6166 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6167 ASTExprBitAnd* rval = new ASTExprBitAnd(left->clone(), new ASTExprBitNot(right, (*yylocp)), (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc));
6168 (*yyvalp) = new ASTExprAssign(left, rval, (*yylocp));}
6169 #line 6170 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6170 break;
6171
6172 case 348: /* Expr_18: Expr_17 BITXORASSIGN Expr_18 */
6173 #line 2296 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6174 {
6175 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6176 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6177 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitXor(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6178 #line 6179 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6179 break;
6180
6181 case 349: /* Expr_18: Expr_17 BITORASSIGN Expr_18 */
6182 #line 2301 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6183 {
6184 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6185 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6186 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitOr(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6187 #line 6188 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6188 break;
6189
6190 case 350: /* Expr_18: Expr_17 ANDASSIGN Expr_18 */
6191 #line 2306 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6192 {
6193 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6194 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6195 (*yyvalp) = new ASTExprAssign(left, new ASTExprAnd(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6196 #line 6197 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6197 break;
6198
6199 case 351: /* Expr_18: Expr_17 ORASSIGN Expr_18 */
6200 #line 2311 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6201 {
6202 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6203 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6204 (*yyvalp) = new ASTExprAssign(left, new ASTExprOr(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6205 #line 6206 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6206 break;
6207
6208 case 352: /* Expression: Expr_18 */
6209 #line 2317 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6210 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6211 #line 6212 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6212 break;
6213
6214 case 353: /* Statement_Expression: Expression */
6215 #line 2320 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6216 {
6217 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6218 expr = handle_statement_expr(expr);
6219 (*yyvalp) = expr;}
6220 #line 6221 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6221 break;
6222
6223 case 354: /* Expression_Constant: Expression */
6224 #line 2327 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6225 {
6226 ASTExpr* content = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6227 (*yyvalp) = new ASTExprConst(content, (*yylocp));}
6228 #line 6229 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6229 break;
6230
6231 case 355: /* Expression_Const_Range: Expression_Range */
6232 #line 2333 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6233 {
6234 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6235 ASTExpr* start = range->start.release();
6236 range->start = new ASTExprConst(start, start->location);
6237 ASTExpr* end = range->end.release();
6238 range->end = new ASTExprConst(end, end->location);
6239 (*yyvalp) = range;
6240 }
6241 #line 6242 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6242 break;
6243
6244 case 356: /* Expression_Range: Expression RANGE Expression */
6245 #line 2344 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6246 {
6247 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6248 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6249 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6250 #line 6251 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6251 break;
6252
6253 case 357: /* Expression_Range: Expression RANGE_LR Expression */
6254 #line 2349 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6255 {
6256 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6257 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6258 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6259 #line 6260 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6260 break;
6261
6262 case 358: /* Expression_Range: Expression RANGE_L Expression */
6263 #line 2354 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6264 {
6265 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6266 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6267 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_L, (*yylocp));}
6268 #line 6269 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6269 break;
6270
6271 case 359: /* Expression_Range: Expression RANGE_R Expression */
6272 #line 2359 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6273 {
6274 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6275 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6276 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_R, (*yylocp));}
6277 #line 6278 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6278 break;
6279
6280 case 360: /* Expression_Range: Expression RANGE_N Expression */
6281 #line 2364 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6282 {
6283 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6284 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6285 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_N, (*yylocp));}
6286 #line 6287 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6287 break;
6288
6289 case 361: /* Expression_Range: LBRACKET Expression COMMA Expression RBRACKET */
6290 #line 2369 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6291 {
6292 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6293 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6294 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6295 #line 6296 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6296 break;
6297
6298 case 362: /* Expression_Range: LBRACKET Expression COMMA Expression RPAREN */
6299 #line 2374 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6300 {
6301 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6302 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6303 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_L, (*yylocp));}
6304 #line 6305 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6305 break;
6306
6307 case 363: /* Expression_Range: LPAREN Expression COMMA Expression RBRACKET */
6308 #line 2379 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6309 {
6310 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6311 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6312 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_R, (*yylocp));}
6313 #line 6314 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6314 break;
6315
6316 case 364: /* Expression_Range: LPAREN Expression COMMA Expression RPAREN */
6317 #line 2384 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6318 {
6319 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6320 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6321 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_N, (*yylocp));}
6322 #line 6323 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6323 break;
6324
6325 case 365: /* Literal: NUMBER */
6326 #line 2394 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6327 {
6328 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6329 (*yyvalp) = new ASTNumberLiteral(val, (*yylocp));}
6330 #line 6331 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6331 break;
6332
6333 case 366: /* Literal: LONGNUMBER */
6334 #line 2397 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6335 {
6336 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6337 (*yyvalp) = new ASTLongNumberLiteral(val, (*yylocp));}
6338 #line 6339 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6339 break;
6340
6341 case 367: /* Literal: SINGLECHAR */
6342 #line 2400 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6343 {
6344 ASTString* as = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6345 ASTFloat* number = new ASTFloat(int(as->getValue().at(1)), 0, (*yylocp));
6346 (*yyvalp) = new ASTCharLiteral(number, (*yylocp));}
6347 #line 6348 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6348 break;
6349
6350 case 368: /* Literal: Literal_String */
6351 #line 2404 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6352 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6353 #line 6354 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6354 break;
6355
6356 case 369: /* Literal: Literal_Bool */
6357 #line 2405 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6358 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6359 #line 6360 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6360 break;
6361
6362 case 370: /* Literal: Literal_Array */
6363 #line 2406 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6364 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6365 #line 6366 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6366 break;
6367
6368 case 371: /* Literal: OPTIONVALUE LPAREN IDENTIFIER RPAREN */
6369 #line 2407 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6370 {
6371 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6372 (*yyvalp) = new ASTOptionValue(name->getValue(), (*yylocp));
6373 delete name;}
6374 #line 6375 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6375 break;
6376
6377 case 372: /* Literal: ISINCLUDED LPAREN IMPORTSTRING RPAREN */
6378 #line 2411 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6379 {
6380 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6381 (*yyvalp) = new ASTIsIncluded(name->getValue(), (*yylocp));
6382 delete name;}
6383 #line 6384 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6384 break;
6385
6386 case 373: /* QuotedString: QuotedString QUOTEDSTRING */
6387 #line 2418 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6388 {
6389 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6390 ASTString* rawstr = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6391 str->append(rawstr->getValue());
6392 delete rawstr;
6393 (*yyvalp) = str;}
6394 #line 6395 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6395 break;
6396
6397 case 374: /* QuotedString: QUOTEDSTRING */
6398 #line 2424 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6399 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6400 #line 6401 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6401 break;
6402
6403 case 375: /* Literal_String: QuotedString */
6404 #line 2428 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6405 {
6406 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6407 ASTStringLiteral* str = new ASTStringLiteral(*rawstring);
6408 delete rawstring;
6409 (*yyvalp) = str;}
6410 #line 6411 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6411 break;
6412
6413 case 376: /* Literal_Bool: ZTRUE */
6414 #line 2437 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6415 {(*yyvalp) = new ASTBoolLiteral(true, (*yylocp));}
6416 #line 6417 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6417 break;
6418
6419 case 377: /* Literal_Bool: ZFALSE */
6420 #line 2438 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6421 {(*yyvalp) = new ASTBoolLiteral(false, (*yylocp));}
6422 #line 6423 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6423 break;
6424
6425 case 378: /* Literal_Array: LT DataType LBRACKET Expression_Constant RBRACKET GT LBRACE Literal_Array_Body Trail_Comma_RBrace */
6426 #line 2445 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6427 {
6428 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-7)].yystate.yysemantics.yyval;
6429 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-5)].yystate.yysemantics.yyval;
6430 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6431 al->type = type;
6432 al->size = size;
6433 al->location = (*yylocp);
6434 (*yyvalp) = al;
6435 }
6436 #line 6437 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6437 break;
6438
6439 case 379: /* Literal_Array: LT DataType LBRACKET Expression_Constant RBRACKET GT LBRACE RBRACE */
6440 #line 2457 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6441 {
6442 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
6443 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
6444 ASTArrayLiteral* al = new ASTArrayLiteral((*yylocp));
6445 al->type = type;
6446 al->size = size;
6447 (*yyvalp) = al;
6448 }
6449 #line 6450 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6450 break;
6451
6452 case 380: /* Literal_Array: LBRACE Literal_Array_Body Trail_Comma_RBrace */
6453 #line 2466 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6454 {
6455 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6456 al->location = (*yylocp);
6457 (*yyvalp) = al;}
6458 #line 6459 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6459 break;
6460
6461 case 381: /* Literal_Array_Body: Literal_Array_Body COMMA Expression */
6462 #line 2473 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6463 {
6464 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6465 ASTExpr* element = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6466 al->elements.push_back(element);
6467 (*yyvalp) = al;}
6468 #line 6469 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6469 break;
6470
6471 case 382: /* Literal_Array_Body: Expression */
6472 #line 2478 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6473 {
6474 ASTExpr* element = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6475 ASTArrayLiteral* al = new ASTArrayLiteral((*yylocp));
6476 al->elements.push_back(element);
6477 (*yyvalp) = al;}
6478 #line 6479 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6479 break;
6480
6481
6482 #line 6483 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6483
6484 default: break;
6485 }
6486 YY_SYMBOL_PRINT ("-> $$ =", yylhsNonterm (yyrule), yyvalp, yylocp);
6487
6488 396260626 return yyok;
6489 # undef yyerrok
6490 # undef YYABORT
6491 # undef YYACCEPT
6492 # undef YYNOMEM
6493 # undef YYERROR
6494 # undef YYBACKUP
6495 # undef yyclearin
6496 # undef YYRECOVERING
6497 }
6498
6499
6500 static void
6501 yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1)
6502 {
6503 YY_USE (yy0);
6504 YY_USE (yy1);
6505
6506 switch (yyn)
6507 {
6508
6509 default: break;
6510 }
6511 }
6512
6513 /* Bison grammar-table manipulation. */
6514
6515 /*-----------------------------------------------.
6516 | Release the memory associated to this symbol. |
6517 `-----------------------------------------------*/
6518
6519 static void
6520 111490 yydestruct (const char *yymsg,
6521 yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, std::shared_ptr<ZScript::ASTFile>& root)
6522 {
6523 YY_USE (yyvaluep);
6524 YY_USE (yylocationp);
6525 111490 YY_USE (root);
6526
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 111490 times.
111490 if (!yymsg)
6527 yymsg = "Deleting";
6528 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
6529
6530 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6531 YY_USE (yykind);
6532 YY_IGNORE_MAYBE_UNINITIALIZED_END
6533 111490 }
6534
6535 /** Number of symbols composing the right hand side of rule #RULE. */
6536 static inline int
6537 396284610 yyrhsLength (yyRuleNum yyrule)
6538 {
6539 396284610 return yyr2[yyrule];
6540 }
6541
6542 static void
6543 111433 yydestroyGLRState (char const *yymsg, yyGLRState *yys, std::shared_ptr<ZScript::ASTFile>& root)
6544 {
6545
1/2
✓ Branch 0 taken 111433 times.
✗ Branch 1 not taken.
111433 if (yys->yyresolved)
6546 222866 yydestruct (yymsg, yy_accessing_symbol (yys->yylrState),
6547 111433 &yys->yysemantics.yyval, &yys->yyloc, root);
6548 else
6549 {
6550 #if YYDEBUG
6551 if (yydebug)
6552 {
6553 if (yys->yysemantics.yyfirstVal)
6554 YY_FPRINTF ((stderr, "%s unresolved", yymsg));
6555 else
6556 YY_FPRINTF ((stderr, "%s incomplete", yymsg));
6557 YY_SYMBOL_PRINT ("", yy_accessing_symbol (yys->yylrState), YY_NULLPTR, &yys->yyloc);
6558 }
6559 #endif
6560
6561 if (yys->yysemantics.yyfirstVal)
6562 {
6563 yySemanticOption *yyoption = yys->yysemantics.yyfirstVal;
6564 yyGLRState *yyrh;
6565 int yyn;
6566 for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule);
6567 yyn > 0;
6568 yyrh = yyrh->yypred, yyn -= 1)
6569 yydestroyGLRState (yymsg, yyrh, root);
6570 }
6571 }
6572 111433 }
6573
6574 #define yypact_value_is_default(Yyn) \
6575 ((Yyn) == YYPACT_NINF)
6576
6577 /** True iff LR state YYSTATE has only a default reduction (regardless
6578 * of token). */
6579 static inline yybool
6580 758550818 yyisDefaultedState (yy_state_t yystate)
6581 {
6582 758550818 return yypact_value_is_default (yypact[yystate]);
6583 }
6584
6585 /** The default reduction for YYSTATE, assuming it has one. */
6586 static inline yyRuleNum
6587 185581160 yydefaultAction (yy_state_t yystate)
6588 {
6589 185581160 return yydefact[yystate];
6590 }
6591
6592 #define yytable_value_is_error(Yyn) \
6593 0
6594
6595 /** The action to take in YYSTATE on seeing YYTOKEN.
6596 * Result R means
6597 * R < 0: Reduce on rule -R.
6598 * R = 0: Error.
6599 * R > 0: Shift to state R.
6600 * Set *YYCONFLICTS to a pointer into yyconfl to a 0-terminated list
6601 * of conflicting reductions.
6602 */
6603 static inline int
6604 286486613 yygetLRActions (yy_state_t yystate, yysymbol_kind_t yytoken, const short** yyconflicts)
6605 {
6606 286486613 int yyindex = yypact[yystate] + yytoken;
6607
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 286486613 times.
286486613 if (yytoken == YYSYMBOL_YYerror)
6608 {
6609 // This is the error token.
6610 *yyconflicts = yyconfl;
6611 return 0;
6612 }
6613
2/2
✓ Branch 0 taken 207727060 times.
✓ Branch 1 taken 78759553 times.
572973226 else if (yyisDefaultedState (yystate)
6614
3/6
✓ Branch 0 taken 286486613 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 286486613 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 286486613 times.
✗ Branch 5 not taken.
286486613 || yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken)
6615 {
6616 207727060 *yyconflicts = yyconfl;
6617 207727060 return -yydefact[yystate];
6618 }
6619 else if (! yytable_value_is_error (yytable[yyindex]))
6620 {
6621 78759553 *yyconflicts = yyconfl + yyconflp[yyindex];
6622 78759553 return yytable[yyindex];
6623 }
6624 else
6625 {
6626 *yyconflicts = yyconfl + yyconflp[yyindex];
6627 return 0;
6628 }
6629 286486613 }
6630
6631 /** Compute post-reduction state.
6632 * \param yystate the current state
6633 * \param yysym the nonterminal to push on the stack
6634 */
6635 static inline yy_state_t
6636 396284610 yyLRgotoState (yy_state_t yystate, yysymbol_kind_t yysym)
6637 {
6638 396284610 int yyr = yypgoto[yysym - YYNTOKENS] + yystate;
6639
5/6
✓ Branch 0 taken 308195496 times.
✓ Branch 1 taken 88089114 times.
✓ Branch 2 taken 308195496 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 59883276 times.
✓ Branch 5 taken 248312220 times.
396284610 if (0 <= yyr && yyr <= YYLAST && yycheck[yyr] == yystate)
6640 59883276 return yytable[yyr];
6641 else
6642 336401334 return yydefgoto[yysym - YYNTOKENS];
6643 396284610 }
6644
6645 static inline yybool
6646 286479477 yyisShiftAction (int yyaction)
6647 {
6648 286479477 return 0 < yyaction;
6649 }
6650
6651 static inline yybool
6652 210703507 yyisErrorAction (int yyaction)
6653 {
6654 210703507 return yyaction == 0;
6655 }
6656
6657 /* GLRStates */
6658
6659 /** Return a fresh GLRStackItem in YYSTACKP. The item is an LR state
6660 * if YYISSTATE, and otherwise a semantic option. Callers should call
6661 * YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient
6662 * headroom. */
6663
6664 static inline yyGLRStackItem*
6665 472140120 yynewGLRStackItem (yyGLRStack* yystackp, yybool yyisState)
6666 {
6667 472140120 yyGLRStackItem* yynewItem = yystackp->yynextFree;
6668 472140120 yystackp->yyspaceLeft -= 1;
6669 472140120 yystackp->yynextFree += 1;
6670 472140120 yynewItem->yystate.yyisState = yyisState;
6671 472140120 return yynewItem;
6672 }
6673
6674 /** Add a new semantic action that will execute the action for rule
6675 * YYRULE on the semantic values in YYRHS to the list of
6676 * alternative actions for YYSTATE. Assumes that YYRHS comes from
6677 * stack #YYK of *YYSTACKP. */
6678 static void
6679 23984 yyaddDeferredAction (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyGLRState* yystate,
6680 yyGLRState* yyrhs, yyRuleNum yyrule)
6681 {
6682 23984 yySemanticOption* yynewOption =
6683 23984 &yynewGLRStackItem (yystackp, yyfalse)->yyoption;
6684 YY_ASSERT (!yynewOption->yyisState);
6685 23984 yynewOption->yystate = yyrhs;
6686 23984 yynewOption->yyrule = yyrule;
6687
1/2
✓ Branch 0 taken 23984 times.
✗ Branch 1 not taken.
23984 if (yystackp->yytops.yylookaheadNeeds[yyk])
6688 {
6689 23984 yynewOption->yyrawchar = yychar;
6690 23984 yynewOption->yyval = yylval;
6691 23984 yynewOption->yyloc = yylloc;
6692 23984 }
6693 else
6694 yynewOption->yyrawchar = TOK_YYEMPTY;
6695 23984 yynewOption->yynext = yystate->yysemantics.yyfirstVal;
6696 23984 yystate->yysemantics.yyfirstVal = yynewOption;
6697
6698
1/2
✓ Branch 0 taken 23984 times.
✗ Branch 1 not taken.
23984 YY_RESERVE_GLRSTACK (yystackp);
6699 23984 }
6700
6701 /* GLRStacks */
6702
6703 /** Initialize YYSET to a singleton set containing an empty stack. */
6704 static yybool
6705 55556 yyinitStateSet (yyGLRStateSet* yyset)
6706 {
6707 55556 yyset->yysize = 1;
6708 55556 yyset->yycapacity = 16;
6709 55556 yyset->yystates
6710 111112 = YY_CAST (yyGLRState**,
6711 YYMALLOC (YY_CAST (YYSIZE_T, yyset->yycapacity)
6712 * sizeof yyset->yystates[0]));
6713
1/2
✓ Branch 0 taken 55556 times.
✗ Branch 1 not taken.
55556 if (! yyset->yystates)
6714 return yyfalse;
6715 55556 yyset->yystates[0] = YY_NULLPTR;
6716 55556 yyset->yylookaheadNeeds
6717 111112 = YY_CAST (yybool*,
6718 YYMALLOC (YY_CAST (YYSIZE_T, yyset->yycapacity)
6719 * sizeof yyset->yylookaheadNeeds[0]));
6720
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 55556 times.
55556 if (! yyset->yylookaheadNeeds)
6721 {
6722 YYFREE (yyset->yystates);
6723 return yyfalse;
6724 }
6725 111112 memset (yyset->yylookaheadNeeds,
6726 0,
6727 55556 YY_CAST (YYSIZE_T, yyset->yycapacity) * sizeof yyset->yylookaheadNeeds[0]);
6728 55556 return yytrue;
6729 55556 }
6730
6731 55556 static void yyfreeStateSet (yyGLRStateSet* yyset)
6732 {
6733 55556 YYFREE (yyset->yystates);
6734 55556 YYFREE (yyset->yylookaheadNeeds);
6735 55556 }
6736
6737 /** Initialize *YYSTACKP to a single empty stack, with total maximum
6738 * capacity for all stacks of YYSIZE. */
6739 static yybool
6740 55556 yyinitGLRStack (yyGLRStack* yystackp, YYPTRDIFF_T yysize)
6741 {
6742 55556 yystackp->yyerrState = 0;
6743 55556 yynerrs = 0;
6744 55556 yystackp->yyspaceLeft = yysize;
6745 55556 yystackp->yyitems
6746 111112 = YY_CAST (yyGLRStackItem*,
6747 YYMALLOC (YY_CAST (YYSIZE_T, yysize)
6748 * sizeof yystackp->yynextFree[0]));
6749
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 55556 times.
55556 if (!yystackp->yyitems)
6750 return yyfalse;
6751 55556 yystackp->yynextFree = yystackp->yyitems;
6752 55556 yystackp->yysplitPoint = YY_NULLPTR;
6753 55556 yystackp->yylastDeleted = YY_NULLPTR;
6754 55556 return yyinitStateSet (&yystackp->yytops);
6755 55556 }
6756
6757
6758 #if YYSTACKEXPANDABLE
6759 # define YYRELOC(YYFROMITEMS, YYTOITEMS, YYX, YYTYPE) \
6760 &((YYTOITEMS) \
6761 - ((YYFROMITEMS) - YY_REINTERPRET_CAST (yyGLRStackItem*, (YYX))))->YYTYPE
6762
6763 /** If *YYSTACKP is expandable, extend it. WARNING: Pointers into the
6764 stack from outside should be considered invalid after this call.
6765 We always expand when there are 1 or fewer items left AFTER an
6766 allocation, so that we can avoid having external pointers exist
6767 across an allocation. */
6768 static void
6769 yyexpandGLRStack (yyGLRStack* yystackp)
6770 {
6771 yyGLRStackItem* yynewItems;
6772 yyGLRStackItem* yyp0, *yyp1;
6773 YYPTRDIFF_T yynewSize;
6774 YYPTRDIFF_T yyn;
6775 YYPTRDIFF_T yysize = yystackp->yynextFree - yystackp->yyitems;
6776 if (YYMAXDEPTH - YYHEADROOM < yysize)
6777 yyMemoryExhausted (yystackp);
6778 yynewSize = 2*yysize;
6779 if (YYMAXDEPTH < yynewSize)
6780 yynewSize = YYMAXDEPTH;
6781 yynewItems
6782 = YY_CAST (yyGLRStackItem*,
6783 YYMALLOC (YY_CAST (YYSIZE_T, yynewSize)
6784 * sizeof yynewItems[0]));
6785 if (! yynewItems)
6786 yyMemoryExhausted (yystackp);
6787 for (yyp0 = yystackp->yyitems, yyp1 = yynewItems, yyn = yysize;
6788 0 < yyn;
6789 yyn -= 1, yyp0 += 1, yyp1 += 1)
6790 {
6791 *yyp1 = *yyp0;
6792 if (*YY_REINTERPRET_CAST (yybool *, yyp0))
6793 {
6794 yyGLRState* yys0 = &yyp0->yystate;
6795 yyGLRState* yys1 = &yyp1->yystate;
6796 if (yys0->yypred != YY_NULLPTR)
6797 yys1->yypred =
6798 YYRELOC (yyp0, yyp1, yys0->yypred, yystate);
6799 if (! yys0->yyresolved && yys0->yysemantics.yyfirstVal != YY_NULLPTR)
6800 yys1->yysemantics.yyfirstVal =
6801 YYRELOC (yyp0, yyp1, yys0->yysemantics.yyfirstVal, yyoption);
6802 }
6803 else
6804 {
6805 yySemanticOption* yyv0 = &yyp0->yyoption;
6806 yySemanticOption* yyv1 = &yyp1->yyoption;
6807 if (yyv0->yystate != YY_NULLPTR)
6808 yyv1->yystate = YYRELOC (yyp0, yyp1, yyv0->yystate, yystate);
6809 if (yyv0->yynext != YY_NULLPTR)
6810 yyv1->yynext = YYRELOC (yyp0, yyp1, yyv0->yynext, yyoption);
6811 }
6812 }
6813 if (yystackp->yysplitPoint != YY_NULLPTR)
6814 yystackp->yysplitPoint = YYRELOC (yystackp->yyitems, yynewItems,
6815 yystackp->yysplitPoint, yystate);
6816
6817 for (yyn = 0; yyn < yystackp->yytops.yysize; yyn += 1)
6818 if (yystackp->yytops.yystates[yyn] != YY_NULLPTR)
6819 yystackp->yytops.yystates[yyn] =
6820 YYRELOC (yystackp->yyitems, yynewItems,
6821 yystackp->yytops.yystates[yyn], yystate);
6822 YYFREE (yystackp->yyitems);
6823 yystackp->yyitems = yynewItems;
6824 yystackp->yynextFree = yynewItems + yysize;
6825 yystackp->yyspaceLeft = yynewSize - yysize;
6826 }
6827 #endif
6828
6829 static void
6830 55556 yyfreeGLRStack (yyGLRStack* yystackp)
6831 {
6832 55556 YYFREE (yystackp->yyitems);
6833 55556 yyfreeStateSet (&yystackp->yytops);
6834 55556 }
6835
6836 /** Assuming that YYS is a GLRState somewhere on *YYSTACKP, update the
6837 * splitpoint of *YYSTACKP, if needed, so that it is at least as deep as
6838 * YYS. */
6839 static inline void
6840 23984 yyupdateSplit (yyGLRStack* yystackp, yyGLRState* yys)
6841 {
6842
3/4
✓ Branch 0 taken 23984 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 20374 times.
✓ Branch 3 taken 3610 times.
23984 if (yystackp->yysplitPoint != YY_NULLPTR && yystackp->yysplitPoint > yys)
6843 3610 yystackp->yysplitPoint = yys;
6844 23984 }
6845
6846 /** Invalidate stack #YYK in *YYSTACKP. */
6847 static inline void
6848 3568 yymarkStackDeleted (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
6849 {
6850
1/2
✓ Branch 0 taken 3568 times.
✗ Branch 1 not taken.
3568 if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
6851 3568 yystackp->yylastDeleted = yystackp->yytops.yystates[yyk];
6852 3568 yystackp->yytops.yystates[yyk] = YY_NULLPTR;
6853 3568 }
6854
6855 /** Undelete the last stack in *YYSTACKP that was marked as deleted. Can
6856 only be done once after a deletion, and only when all other stacks have
6857 been deleted. */
6858 static void
6859 yyundeleteLastStack (yyGLRStack* yystackp)
6860 {
6861 if (yystackp->yylastDeleted == YY_NULLPTR || yystackp->yytops.yysize != 0)
6862 return;
6863 yystackp->yytops.yystates[0] = yystackp->yylastDeleted;
6864 yystackp->yytops.yysize = 1;
6865 YY_DPRINTF ((stderr, "Restoring last deleted stack as stack #0.\n"));
6866 yystackp->yylastDeleted = YY_NULLPTR;
6867 }
6868
6869 static inline void
6870 3625 yyremoveDeletes (yyGLRStack* yystackp)
6871 {
6872 YYPTRDIFF_T yyi, yyj;
6873 3625 yyi = yyj = 0;
6874
2/2
✓ Branch 0 taken 7193 times.
✓ Branch 1 taken 3625 times.
10818 while (yyj < yystackp->yytops.yysize)
6875 {
6876
2/2
✓ Branch 0 taken 3625 times.
✓ Branch 1 taken 3568 times.
7193 if (yystackp->yytops.yystates[yyi] == YY_NULLPTR)
6877 {
6878
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3568 times.
3568 if (yyi == yyj)
6879 3568 YY_DPRINTF ((stderr, "Removing dead stacks.\n"));
6880 3568 yystackp->yytops.yysize -= 1;
6881 3568 }
6882 else
6883 {
6884 3625 yystackp->yytops.yystates[yyj] = yystackp->yytops.yystates[yyi];
6885 /* In the current implementation, it's unnecessary to copy
6886 yystackp->yytops.yylookaheadNeeds[yyi] since, after
6887 yyremoveDeletes returns, the parser immediately either enters
6888 deterministic operation or shifts a token. However, it doesn't
6889 hurt, and the code might evolve to need it. */
6890 3625 yystackp->yytops.yylookaheadNeeds[yyj] =
6891 3625 yystackp->yytops.yylookaheadNeeds[yyi];
6892
1/2
✓ Branch 0 taken 3625 times.
✗ Branch 1 not taken.
3625 if (yyj != yyi)
6893 YY_DPRINTF ((stderr, "Rename stack %ld -> %ld.\n",
6894 YY_CAST (long, yyi), YY_CAST (long, yyj)));
6895 3625 yyj += 1;
6896 }
6897 7193 yyi += 1;
6898 }
6899 3625 }
6900
6901 /** Shift to a new state on stack #YYK of *YYSTACKP, corresponding to LR
6902 * state YYLRSTATE, at input position YYPOSN, with (resolved) semantic
6903 * value *YYVALP and source location *YYLOCP. */
6904 static inline void
6905 472092152 yyglrShift (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yy_state_t yylrState,
6906 YYPTRDIFF_T yyposn,
6907 YYSTYPE* yyvalp, YYLTYPE* yylocp)
6908 {
6909 472092152 yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
6910
6911 472092152 yynewState->yylrState = yylrState;
6912 472092152 yynewState->yyposn = yyposn;
6913 472092152 yynewState->yyresolved = yytrue;
6914 472092152 yynewState->yypred = yystackp->yytops.yystates[yyk];
6915 472092152 yynewState->yysemantics.yyval = *yyvalp;
6916 472092152 yynewState->yyloc = *yylocp;
6917 472092152 yystackp->yytops.yystates[yyk] = yynewState;
6918
6919
1/2
✓ Branch 0 taken 472092152 times.
✗ Branch 1 not taken.
472092152 YY_RESERVE_GLRSTACK (yystackp);
6920 472092152 }
6921
6922 /** Shift stack #YYK of *YYSTACKP, to a new state corresponding to LR
6923 * state YYLRSTATE, at input position YYPOSN, with the (unresolved)
6924 * semantic value of YYRHS under the action for YYRULE. */
6925 static inline void
6926 23984 yyglrShiftDefer (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yy_state_t yylrState,
6927 YYPTRDIFF_T yyposn, yyGLRState* yyrhs, yyRuleNum yyrule)
6928 {
6929 23984 yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
6930 YY_ASSERT (yynewState->yyisState);
6931
6932 23984 yynewState->yylrState = yylrState;
6933 23984 yynewState->yyposn = yyposn;
6934 23984 yynewState->yyresolved = yyfalse;
6935 23984 yynewState->yypred = yystackp->yytops.yystates[yyk];
6936 23984 yynewState->yysemantics.yyfirstVal = YY_NULLPTR;
6937 23984 yystackp->yytops.yystates[yyk] = yynewState;
6938
6939 /* Invokes YY_RESERVE_GLRSTACK. */
6940 23984 yyaddDeferredAction (yystackp, yyk, yynewState, yyrhs, yyrule);
6941 23984 }
6942
6943 #if YYDEBUG
6944
6945 /*----------------------------------------------------------------------.
6946 | Report that stack #YYK of *YYSTACKP is going to be reduced by YYRULE. |
6947 `----------------------------------------------------------------------*/
6948
6949 static inline void
6950 yy_reduce_print (yybool yynormal, yyGLRStackItem* yyvsp, YYPTRDIFF_T yyk,
6951 yyRuleNum yyrule, std::shared_ptr<ZScript::ASTFile>& root)
6952 {
6953 int yynrhs = yyrhsLength (yyrule);
6954 int yylow = 1;
6955 int yyi;
6956 YY_FPRINTF ((stderr, "Reducing stack %ld by rule %d (line %d):\n",
6957 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule]));
6958 if (! yynormal)
6959 yyfillin (yyvsp, 1, -yynrhs);
6960 /* The symbols being reduced. */
6961 for (yyi = 0; yyi < yynrhs; yyi++)
6962 {
6963 YY_FPRINTF ((stderr, " $%d = ", yyi + 1));
6964 yy_symbol_print (stderr,
6965 yy_accessing_symbol (yyvsp[yyi - yynrhs + 1].yystate.yylrState),
6966 &yyvsp[yyi - yynrhs + 1].yystate.yysemantics.yyval,
6967 &(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL ((yyi + 1) - (yynrhs))].yystate.yyloc) , root);
6968 if (!yyvsp[yyi - yynrhs + 1].yystate.yyresolved)
6969 YY_FPRINTF ((stderr, " (unresolved)"));
6970 YY_FPRINTF ((stderr, "\n"));
6971 }
6972 }
6973 #endif
6974
6975 /** Pop the symbols consumed by reduction #YYRULE from the top of stack
6976 * #YYK of *YYSTACKP, and perform the appropriate semantic action on their
6977 * semantic values. Assumes that all ambiguities in semantic values
6978 * have been previously resolved. Set *YYVALP to the resulting value,
6979 * and *YYLOCP to the computed location (if any). Return value is as
6980 * for userAction. */
6981 static inline YYRESULTTAG
6982 396260626 yydoAction (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyRuleNum yyrule,
6983 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::shared_ptr<ZScript::ASTFile>& root)
6984 {
6985 396260626 int yynrhs = yyrhsLength (yyrule);
6986
6987
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 396260626 times.
396260626 if (yystackp->yysplitPoint == YY_NULLPTR)
6988 {
6989 /* Standard special case: single stack. */
6990 396260626 yyGLRStackItem* yyrhs
6991 396260626 = YY_REINTERPRET_CAST (yyGLRStackItem*, yystackp->yytops.yystates[yyk]);
6992 YY_ASSERT (yyk == 0);
6993 396260626 yystackp->yynextFree -= yynrhs;
6994 396260626 yystackp->yyspaceLeft += yynrhs;
6995 396260626 yystackp->yytops.yystates[0] = & yystackp->yynextFree[-1].yystate;
6996 792521252 return yyuserAction (yyrule, yynrhs, yyrhs, yystackp, yyk,
6997 396260626 yyvalp, yylocp, root);
6998 }
6999 else
7000 {
7001 yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
7002 yyGLRState* yys = yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred
7003 = yystackp->yytops.yystates[yyk];
7004 int yyi;
7005 if (yynrhs == 0)
7006 /* Set default location. */
7007 yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yys->yyloc;
7008 for (yyi = 0; yyi < yynrhs; yyi += 1)
7009 {
7010 yys = yys->yypred;
7011 YY_ASSERT (yys);
7012 }
7013 yyupdateSplit (yystackp, yys);
7014 yystackp->yytops.yystates[yyk] = yys;
7015 return yyuserAction (yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
7016 yystackp, yyk, yyvalp, yylocp, root);
7017 }
7018 396260626 }
7019
7020 /** Pop items off stack #YYK of *YYSTACKP according to grammar rule YYRULE,
7021 * and push back on the resulting nonterminal symbol. Perform the
7022 * semantic action associated with YYRULE and store its value with the
7023 * newly pushed state, if YYFORCEEVAL or if *YYSTACKP is currently
7024 * unambiguous. Otherwise, store the deferred semantic action with
7025 * the new state. If the new state would have an identical input
7026 * position, LR state, and predecessor to an existing state on the stack,
7027 * it is identified with that existing state, eliminating stack #YYK from
7028 * *YYSTACKP. In this case, the semantic value is
7029 * added to the options for the existing state's semantic value.
7030 */
7031 static inline YYRESULTTAG
7032 396284610 yyglrReduce (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyRuleNum yyrule,
7033 yybool yyforceEval, std::shared_ptr<ZScript::ASTFile>& root)
7034 {
7035 396284610 YYPTRDIFF_T yyposn = yystackp->yytops.yystates[yyk]->yyposn;
7036
7037
3/4
✓ Branch 0 taken 23984 times.
✓ Branch 1 taken 396260626 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 23984 times.
396284610 if (yyforceEval || yystackp->yysplitPoint == YY_NULLPTR)
7038 {
7039 YYSTYPE yyval;
7040 YYLTYPE yyloc;
7041
7042 396260626 YYRESULTTAG yyflag = yydoAction (yystackp, yyk, yyrule, &yyval, &yyloc, root);
7043
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 396260626 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
396260626 if (yyflag == yyerr && yystackp->yysplitPoint != YY_NULLPTR)
7044 YY_DPRINTF ((stderr,
7045 "Parse on stack %ld rejected by rule %d (line %d).\n",
7046 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule]));
7047
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 396260626 times.
396260626 if (yyflag != yyok)
7048 return yyflag;
7049 792521252 yyglrShift (yystackp, yyk,
7050 792521252 yyLRgotoState (yystackp->yytops.yystates[yyk]->yylrState,
7051 396260626 yylhsNonterm (yyrule)),
7052 396260626 yyposn, &yyval, &yyloc);
7053 396260626 }
7054 else
7055 {
7056 YYPTRDIFF_T yyi;
7057 int yyn;
7058 23984 yyGLRState* yys, *yys0 = yystackp->yytops.yystates[yyk];
7059 yy_state_t yynewLRState;
7060
7061
2/2
✓ Branch 0 taken 26574 times.
✓ Branch 1 taken 23984 times.
50558 for (yys = yystackp->yytops.yystates[yyk], yyn = yyrhsLength (yyrule);
7062 50558 0 < yyn; yyn -= 1)
7063 {
7064 26574 yys = yys->yypred;
7065 YY_ASSERT (yys);
7066 26574 }
7067 23984 yyupdateSplit (yystackp, yys);
7068 23984 yynewLRState = yyLRgotoState (yys->yylrState, yylhsNonterm (yyrule));
7069 23984 YY_DPRINTF ((stderr,
7070 "Reduced stack %ld by rule %d (line %d); action deferred. "
7071 "Now in state %d.\n",
7072 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule],
7073 yynewLRState));
7074
2/2
✓ Branch 0 taken 23984 times.
✓ Branch 1 taken 47968 times.
71952 for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
7075
3/4
✓ Branch 0 taken 23984 times.
✓ Branch 1 taken 23984 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 23984 times.
71952 if (yyi != yyk && yystackp->yytops.yystates[yyi] != YY_NULLPTR)
7076 {
7077 23984 yyGLRState *yysplit = yystackp->yysplitPoint;
7078 23984 yyGLRState *yyp = yystackp->yytops.yystates[yyi];
7079
5/6
✓ Branch 0 taken 26553 times.
✓ Branch 1 taken 21415 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 26553 times.
✓ Branch 4 taken 23984 times.
✓ Branch 5 taken 23984 times.
47968 while (yyp != yys && yyp != yysplit && yyp->yyposn >= yyposn)
7080 {
7081
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 23984 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
23984 if (yyp->yylrState == yynewLRState && yyp->yypred == yys)
7082 {
7083 yyaddDeferredAction (yystackp, yyk, yyp, yys0, yyrule);
7084 yymarkStackDeleted (yystackp, yyk);
7085 YY_DPRINTF ((stderr, "Merging stack %ld into stack %ld.\n",
7086 YY_CAST (long, yyk), YY_CAST (long, yyi)));
7087 return yyok;
7088 }
7089 23984 yyp = yyp->yypred;
7090 }
7091 23984 }
7092 23984 yystackp->yytops.yystates[yyk] = yys;
7093 23984 yyglrShiftDefer (yystackp, yyk, yynewLRState, yyposn, yys0, yyrule);
7094 }
7095 396284610 return yyok;
7096 396284610 }
7097
7098 static YYPTRDIFF_T
7099 3568 yysplitStack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
7100 {
7101
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3568 times.
3568 if (yystackp->yysplitPoint == YY_NULLPTR)
7102 {
7103 YY_ASSERT (yyk == 0);
7104 3568 yystackp->yysplitPoint = yystackp->yytops.yystates[yyk];
7105 3568 }
7106
1/2
✓ Branch 0 taken 3568 times.
✗ Branch 1 not taken.
3568 if (yystackp->yytops.yycapacity <= yystackp->yytops.yysize)
7107 {
7108 YYPTRDIFF_T state_size = YYSIZEOF (yystackp->yytops.yystates[0]);
7109 YYPTRDIFF_T half_max_capacity = YYSIZE_MAXIMUM / 2 / state_size;
7110 if (half_max_capacity < yystackp->yytops.yycapacity)
7111 yyMemoryExhausted (yystackp);
7112 yystackp->yytops.yycapacity *= 2;
7113
7114 {
7115 yyGLRState** yynewStates
7116 = YY_CAST (yyGLRState**,
7117 YYREALLOC (yystackp->yytops.yystates,
7118 (YY_CAST (YYSIZE_T, yystackp->yytops.yycapacity)
7119 * sizeof yynewStates[0])));
7120 if (yynewStates == YY_NULLPTR)
7121 yyMemoryExhausted (yystackp);
7122 yystackp->yytops.yystates = yynewStates;
7123 }
7124
7125 {
7126 yybool* yynewLookaheadNeeds
7127 = YY_CAST (yybool*,
7128 YYREALLOC (yystackp->yytops.yylookaheadNeeds,
7129 (YY_CAST (YYSIZE_T, yystackp->yytops.yycapacity)
7130 * sizeof yynewLookaheadNeeds[0])));
7131 if (yynewLookaheadNeeds == YY_NULLPTR)
7132 yyMemoryExhausted (yystackp);
7133 yystackp->yytops.yylookaheadNeeds = yynewLookaheadNeeds;
7134 }
7135 }
7136 3568 yystackp->yytops.yystates[yystackp->yytops.yysize]
7137 7136 = yystackp->yytops.yystates[yyk];
7138 3568 yystackp->yytops.yylookaheadNeeds[yystackp->yytops.yysize]
7139 7136 = yystackp->yytops.yylookaheadNeeds[yyk];
7140 3568 yystackp->yytops.yysize += 1;
7141 3568 return yystackp->yytops.yysize - 1;
7142 }
7143
7144 /** True iff YYY0 and YYY1 represent identical options at the top level.
7145 * That is, they represent the same rule applied to RHS symbols
7146 * that produce the same terminal symbols. */
7147 static yybool
7148 yyidenticalOptions (yySemanticOption* yyy0, yySemanticOption* yyy1)
7149 {
7150 if (yyy0->yyrule == yyy1->yyrule)
7151 {
7152 yyGLRState *yys0, *yys1;
7153 int yyn;
7154 for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
7155 yyn = yyrhsLength (yyy0->yyrule);
7156 yyn > 0;
7157 yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
7158 if (yys0->yyposn != yys1->yyposn)
7159 return yyfalse;
7160 return yytrue;
7161 }
7162 else
7163 return yyfalse;
7164 }
7165
7166 /** Assuming identicalOptions (YYY0,YYY1), destructively merge the
7167 * alternative semantic values for the RHS-symbols of YYY1 and YYY0. */
7168 static void
7169 yymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1)
7170 {
7171 yyGLRState *yys0, *yys1;
7172 int yyn;
7173 for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
7174 yyn = yyrhsLength (yyy0->yyrule);
7175 0 < yyn;
7176 yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
7177 {
7178 if (yys0 == yys1)
7179 break;
7180 else if (yys0->yyresolved)
7181 {
7182 yys1->yyresolved = yytrue;
7183 yys1->yysemantics.yyval = yys0->yysemantics.yyval;
7184 }
7185 else if (yys1->yyresolved)
7186 {
7187 yys0->yyresolved = yytrue;
7188 yys0->yysemantics.yyval = yys1->yysemantics.yyval;
7189 }
7190 else
7191 {
7192 yySemanticOption** yyz0p = &yys0->yysemantics.yyfirstVal;
7193 yySemanticOption* yyz1 = yys1->yysemantics.yyfirstVal;
7194 while (yytrue)
7195 {
7196 if (yyz1 == *yyz0p || yyz1 == YY_NULLPTR)
7197 break;
7198 else if (*yyz0p == YY_NULLPTR)
7199 {
7200 *yyz0p = yyz1;
7201 break;
7202 }
7203 else if (*yyz0p < yyz1)
7204 {
7205 yySemanticOption* yyz = *yyz0p;
7206 *yyz0p = yyz1;
7207 yyz1 = yyz1->yynext;
7208 (*yyz0p)->yynext = yyz;
7209 }
7210 yyz0p = &(*yyz0p)->yynext;
7211 }
7212 yys1->yysemantics.yyfirstVal = yys0->yysemantics.yyfirstVal;
7213 }
7214 }
7215 }
7216
7217 /** Y0 and Y1 represent two possible actions to take in a given
7218 * parsing state; return 0 if no combination is possible,
7219 * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */
7220 static int
7221 yypreference (yySemanticOption* y0, yySemanticOption* y1)
7222 {
7223 yyRuleNum r0 = y0->yyrule, r1 = y1->yyrule;
7224 int p0 = yydprec[r0], p1 = yydprec[r1];
7225
7226 if (p0 == p1)
7227 {
7228 if (yymerger[r0] == 0 || yymerger[r0] != yymerger[r1])
7229 return 0;
7230 else
7231 return 1;
7232 }
7233 if (p0 == 0 || p1 == 0)
7234 return 0;
7235 if (p0 < p1)
7236 return 3;
7237 if (p1 < p0)
7238 return 2;
7239 return 0;
7240 }
7241
7242 static YYRESULTTAG
7243 yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root);
7244
7245
7246 /** Resolve the previous YYN states starting at and including state YYS
7247 * on *YYSTACKP. If result != yyok, some states may have been left
7248 * unresolved possibly with empty semantic option chains. Regardless
7249 * of whether result = yyok, each state has been left with consistent
7250 * data so that yydestroyGLRState can be invoked if necessary. */
7251 static YYRESULTTAG
7252 13294 yyresolveStates (yyGLRState* yys, int yyn,
7253 yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root)
7254 {
7255
2/2
✓ Branch 0 taken 3568 times.
✓ Branch 1 taken 9726 times.
13294 if (0 < yyn)
7256 {
7257 YY_ASSERT (yys->yypred);
7258
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 9726 times.
9726 YYCHK (yyresolveStates (yys->yypred, yyn-1, yystackp, root));
7259
1/2
✓ Branch 0 taken 9726 times.
✗ Branch 1 not taken.
9726 if (! yys->yyresolved)
7260 YYCHK (yyresolveValue (yys, yystackp, root));
7261 9726 }
7262 13294 return yyok;
7263 13294 }
7264
7265 /** Resolve the states for the RHS of YYOPT on *YYSTACKP, perform its
7266 * user action, and return the semantic value and location in *YYVALP
7267 * and *YYLOCP. Regardless of whether result = yyok, all RHS states
7268 * have been destroyed (assuming the user action destroys all RHS
7269 * semantic values if invoked). */
7270 static YYRESULTTAG
7271 yyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystackp,
7272 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::shared_ptr<ZScript::ASTFile>& root)
7273 {
7274 yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
7275 int yynrhs = yyrhsLength (yyopt->yyrule);
7276 YYRESULTTAG yyflag =
7277 yyresolveStates (yyopt->yystate, yynrhs, yystackp, root);
7278 if (yyflag != yyok)
7279 {
7280 yyGLRState *yys;
7281 for (yys = yyopt->yystate; yynrhs > 0; yys = yys->yypred, yynrhs -= 1)
7282 yydestroyGLRState ("Cleanup: popping", yys, root);
7283 return yyflag;
7284 }
7285
7286 yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred = yyopt->yystate;
7287 if (yynrhs == 0)
7288 /* Set default location. */
7289 yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yyopt->yystate->yyloc;
7290 {
7291 int yychar_current = yychar;
7292 YYSTYPE yylval_current = yylval;
7293 YYLTYPE yylloc_current = yylloc;
7294 yychar = yyopt->yyrawchar;
7295 yylval = yyopt->yyval;
7296 yylloc = yyopt->yyloc;
7297 yyflag = yyuserAction (yyopt->yyrule, yynrhs,
7298 yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
7299 yystackp, -1, yyvalp, yylocp, root);
7300 yychar = yychar_current;
7301 yylval = yylval_current;
7302 yylloc = yylloc_current;
7303 }
7304 return yyflag;
7305 }
7306
7307 #if YYDEBUG
7308 static void
7309 yyreportTree (yySemanticOption* yyx, int yyindent)
7310 {
7311 int yynrhs = yyrhsLength (yyx->yyrule);
7312 int yyi;
7313 yyGLRState* yys;
7314 yyGLRState* yystates[1 + YYMAXRHS];
7315 yyGLRState yyleftmost_state;
7316
7317 for (yyi = yynrhs, yys = yyx->yystate; 0 < yyi; yyi -= 1, yys = yys->yypred)
7318 yystates[yyi] = yys;
7319 if (yys == YY_NULLPTR)
7320 {
7321 yyleftmost_state.yyposn = 0;
7322 yystates[0] = &yyleftmost_state;
7323 }
7324 else
7325 yystates[0] = yys;
7326
7327 if (yyx->yystate->yyposn < yys->yyposn + 1)
7328 YY_FPRINTF ((stderr, "%*s%s -> <Rule %d, empty>\n",
7329 yyindent, "", yysymbol_name (yylhsNonterm (yyx->yyrule)),
7330 yyx->yyrule - 1));
7331 else
7332 YY_FPRINTF ((stderr, "%*s%s -> <Rule %d, tokens %ld .. %ld>\n",
7333 yyindent, "", yysymbol_name (yylhsNonterm (yyx->yyrule)),
7334 yyx->yyrule - 1, YY_CAST (long, yys->yyposn + 1),
7335 YY_CAST (long, yyx->yystate->yyposn)));
7336 for (yyi = 1; yyi <= yynrhs; yyi += 1)
7337 {
7338 if (yystates[yyi]->yyresolved)
7339 {
7340 if (yystates[yyi-1]->yyposn+1 > yystates[yyi]->yyposn)
7341 YY_FPRINTF ((stderr, "%*s%s <empty>\n", yyindent+2, "",
7342 yysymbol_name (yy_accessing_symbol (yystates[yyi]->yylrState))));
7343 else
7344 YY_FPRINTF ((stderr, "%*s%s <tokens %ld .. %ld>\n", yyindent+2, "",
7345 yysymbol_name (yy_accessing_symbol (yystates[yyi]->yylrState)),
7346 YY_CAST (long, yystates[yyi-1]->yyposn + 1),
7347 YY_CAST (long, yystates[yyi]->yyposn)));
7348 }
7349 else
7350 yyreportTree (yystates[yyi]->yysemantics.yyfirstVal, yyindent+2);
7351 }
7352 }
7353 #endif
7354
7355 static YYRESULTTAG
7356 yyreportAmbiguity (yySemanticOption* yyx0,
7357 yySemanticOption* yyx1, std::shared_ptr<ZScript::ASTFile>& root)
7358 {
7359 YY_USE (yyx0);
7360 YY_USE (yyx1);
7361
7362 #if YYDEBUG
7363 YY_FPRINTF ((stderr, "Ambiguity detected.\n"));
7364 YY_FPRINTF ((stderr, "Option 1,\n"));
7365 yyreportTree (yyx0, 2);
7366 YY_FPRINTF ((stderr, "\nOption 2,\n"));
7367 yyreportTree (yyx1, 2);
7368 YY_FPRINTF ((stderr, "\n"));
7369 #endif
7370
7371 yyerror (root, YY_("syntax is ambiguous"));
7372 return yyabort;
7373 }
7374
7375 /** Resolve the locations for each of the YYN1 states in *YYSTACKP,
7376 * ending at YYS1. Has no effect on previously resolved states.
7377 * The first semantic option of a state is always chosen. */
7378 static void
7379 yyresolveLocations (yyGLRState *yys1, int yyn1,
7380 yyGLRStack *yystackp, std::shared_ptr<ZScript::ASTFile>& root)
7381 {
7382 if (0 < yyn1)
7383 {
7384 yyresolveLocations (yys1->yypred, yyn1 - 1, yystackp, root);
7385 if (!yys1->yyresolved)
7386 {
7387 yyGLRStackItem yyrhsloc[1 + YYMAXRHS];
7388 int yynrhs;
7389 yySemanticOption *yyoption = yys1->yysemantics.yyfirstVal;
7390 YY_ASSERT (yyoption);
7391 yynrhs = yyrhsLength (yyoption->yyrule);
7392 if (0 < yynrhs)
7393 {
7394 yyGLRState *yys;
7395 int yyn;
7396 yyresolveLocations (yyoption->yystate, yynrhs,
7397 yystackp, root);
7398 for (yys = yyoption->yystate, yyn = yynrhs;
7399 yyn > 0;
7400 yys = yys->yypred, yyn -= 1)
7401 yyrhsloc[yyn].yystate.yyloc = yys->yyloc;
7402 }
7403 else
7404 {
7405 /* Both yyresolveAction and yyresolveLocations traverse the GSS
7406 in reverse rightmost order. It is only necessary to invoke
7407 yyresolveLocations on a subforest for which yyresolveAction
7408 would have been invoked next had an ambiguity not been
7409 detected. Thus the location of the previous state (but not
7410 necessarily the previous state itself) is guaranteed to be
7411 resolved already. */
7412 yyGLRState *yyprevious = yyoption->yystate;
7413 yyrhsloc[0].yystate.yyloc = yyprevious->yyloc;
7414 }
7415 YYLLOC_DEFAULT ((yys1->yyloc), yyrhsloc, yynrhs);
7416 }
7417 }
7418 }
7419
7420 /** Resolve the ambiguity represented in state YYS in *YYSTACKP,
7421 * perform the indicated actions, and set the semantic value of YYS.
7422 * If result != yyok, the chain of semantic options in YYS has been
7423 * cleared instead or it has been left unmodified except that
7424 * redundant options may have been removed. Regardless of whether
7425 * result = yyok, YYS has been left with consistent data so that
7426 * yydestroyGLRState can be invoked if necessary. */
7427 static YYRESULTTAG
7428 yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root)
7429 {
7430 yySemanticOption* yyoptionList = yys->yysemantics.yyfirstVal;
7431 yySemanticOption* yybest = yyoptionList;
7432 yySemanticOption** yypp;
7433 yybool yymerge = yyfalse;
7434 YYSTYPE yyval;
7435 YYRESULTTAG yyflag;
7436 YYLTYPE *yylocp = &yys->yyloc;
7437
7438 for (yypp = &yyoptionList->yynext; *yypp != YY_NULLPTR; )
7439 {
7440 yySemanticOption* yyp = *yypp;
7441
7442 if (yyidenticalOptions (yybest, yyp))
7443 {
7444 yymergeOptionSets (yybest, yyp);
7445 *yypp = yyp->yynext;
7446 }
7447 else
7448 {
7449 switch (yypreference (yybest, yyp))
7450 {
7451 case 0:
7452 yyresolveLocations (yys, 1, yystackp, root);
7453 return yyreportAmbiguity (yybest, yyp, root);
7454 break;
7455 case 1:
7456 yymerge = yytrue;
7457 break;
7458 case 2:
7459 break;
7460 case 3:
7461 yybest = yyp;
7462 yymerge = yyfalse;
7463 break;
7464 default:
7465 /* This cannot happen so it is not worth a YY_ASSERT (yyfalse),
7466 but some compilers complain if the default case is
7467 omitted. */
7468 break;
7469 }
7470 yypp = &yyp->yynext;
7471 }
7472 }
7473
7474 if (yymerge)
7475 {
7476 yySemanticOption* yyp;
7477 int yyprec = yydprec[yybest->yyrule];
7478 yyflag = yyresolveAction (yybest, yystackp, &yyval, yylocp, root);
7479 if (yyflag == yyok)
7480 for (yyp = yybest->yynext; yyp != YY_NULLPTR; yyp = yyp->yynext)
7481 {
7482 if (yyprec == yydprec[yyp->yyrule])
7483 {
7484 YYSTYPE yyval_other;
7485 YYLTYPE yydummy;
7486 yyflag = yyresolveAction (yyp, yystackp, &yyval_other, &yydummy, root);
7487 if (yyflag != yyok)
7488 {
7489 yydestruct ("Cleanup: discarding incompletely merged value for",
7490 yy_accessing_symbol (yys->yylrState),
7491 &yyval, yylocp, root);
7492 break;
7493 }
7494 yyuserMerge (yymerger[yyp->yyrule], &yyval, &yyval_other);
7495 }
7496 }
7497 }
7498 else
7499 yyflag = yyresolveAction (yybest, yystackp, &yyval, yylocp, root);
7500
7501 if (yyflag == yyok)
7502 {
7503 yys->yyresolved = yytrue;
7504 yys->yysemantics.yyval = yyval;
7505 }
7506 else
7507 yys->yysemantics.yyfirstVal = YY_NULLPTR;
7508 return yyflag;
7509 }
7510
7511 static YYRESULTTAG
7512 3568 yyresolveStack (yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root)
7513 {
7514
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3568 times.
3568 if (yystackp->yysplitPoint != YY_NULLPTR)
7515 {
7516 yyGLRState* yys;
7517 int yyn;
7518
7519
2/2
✓ Branch 0 taken 9726 times.
✓ Branch 1 taken 3568 times.
13294 for (yyn = 0, yys = yystackp->yytops.yystates[0];
7520 13294 yys != yystackp->yysplitPoint;
7521 9726 yys = yys->yypred, yyn += 1)
7522 9726 continue;
7523
1/2
✓ Branch 0 taken 3568 times.
✗ Branch 1 not taken.
3568 YYCHK (yyresolveStates (yystackp->yytops.yystates[0], yyn, yystackp
7524 , root));
7525 3568 }
7526 3568 return yyok;
7527 3568 }
7528
7529 /** Called when returning to deterministic operation to clean up the extra
7530 * stacks. */
7531 static void
7532 3625 yycompressStack (yyGLRStack* yystackp)
7533 {
7534 /* yyr is the state after the split point. */
7535 yyGLRState *yyr;
7536
7537
3/4
✓ Branch 0 taken 3625 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3568 times.
✓ Branch 3 taken 57 times.
3625 if (yystackp->yytops.yysize != 1 || yystackp->yysplitPoint == YY_NULLPTR)
7538 57 return;
7539
7540 {
7541 yyGLRState *yyp, *yyq;
7542
2/2
✓ Branch 0 taken 9726 times.
✓ Branch 1 taken 3568 times.
13294 for (yyp = yystackp->yytops.yystates[0], yyq = yyp->yypred, yyr = YY_NULLPTR;
7543 13294 yyp != yystackp->yysplitPoint;
7544 9726 yyr = yyp, yyp = yyq, yyq = yyp->yypred)
7545 9726 yyp->yypred = yyr;
7546 }
7547
7548 3568 yystackp->yyspaceLeft += yystackp->yynextFree - yystackp->yyitems;
7549 3568 yystackp->yynextFree = YY_REINTERPRET_CAST (yyGLRStackItem*, yystackp->yysplitPoint) + 1;
7550 3568 yystackp->yyspaceLeft -= yystackp->yynextFree - yystackp->yyitems;
7551 3568 yystackp->yysplitPoint = YY_NULLPTR;
7552 3568 yystackp->yylastDeleted = YY_NULLPTR;
7553
7554
2/2
✓ Branch 0 taken 3568 times.
✓ Branch 1 taken 9726 times.
13294 while (yyr != YY_NULLPTR)
7555 {
7556 9726 yystackp->yynextFree->yystate = *yyr;
7557 9726 yyr = yyr->yypred;
7558 9726 yystackp->yynextFree->yystate.yypred = &yystackp->yynextFree[-1].yystate;
7559 9726 yystackp->yytops.yystates[0] = &yystackp->yynextFree->yystate;
7560 9726 yystackp->yynextFree += 1;
7561 9726 yystackp->yyspaceLeft -= 1;
7562 }
7563 3625 }
7564
7565 static YYRESULTTAG
7566 10704 yyprocessOneStack (yyGLRStack* yystackp, YYPTRDIFF_T yyk,
7567 YYPTRDIFF_T yyposn, std::shared_ptr<ZScript::ASTFile>& root)
7568 {
7569
2/2
✓ Branch 0 taken 3568 times.
✓ Branch 1 taken 27552 times.
31120 while (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
7570 {
7571 27552 yy_state_t yystate = yystackp->yytops.yystates[yyk]->yylrState;
7572 27552 YY_DPRINTF ((stderr, "Stack %ld Entering state %d\n",
7573 YY_CAST (long, yyk), yystate));
7574
7575 YY_ASSERT (yystate != YYFINAL);
7576
7577
2/2
✓ Branch 0 taken 5556 times.
✓ Branch 1 taken 21996 times.
27552 if (yyisDefaultedState (yystate))
7578 {
7579 YYRESULTTAG yyflag;
7580 5556 yyRuleNum yyrule = yydefaultAction (yystate);
7581
1/2
✓ Branch 0 taken 5556 times.
✗ Branch 1 not taken.
5556 if (yyrule == 0)
7582 {
7583 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yyk)));
7584 yymarkStackDeleted (yystackp, yyk);
7585 return yyok;
7586 }
7587 5556 yyflag = yyglrReduce (yystackp, yyk, yyrule, yyimmediate[yyrule], root);
7588
1/2
✓ Branch 0 taken 5556 times.
✗ Branch 1 not taken.
5556 if (yyflag == yyerr)
7589 {
7590 YY_DPRINTF ((stderr,
7591 "Stack %ld dies "
7592 "(predicate failure or explicit user error).\n",
7593 YY_CAST (long, yyk)));
7594 yymarkStackDeleted (yystackp, yyk);
7595 return yyok;
7596 }
7597
1/2
✓ Branch 0 taken 5556 times.
✗ Branch 1 not taken.
5556 if (yyflag != yyok)
7598 return yyflag;
7599 5556 }
7600 else
7601 {
7602 21996 yysymbol_kind_t yytoken = yygetToken (&yychar, root);
7603 const short* yyconflicts;
7604 21996 const int yyaction = yygetLRActions (yystate, yytoken, &yyconflicts);
7605 21996 yystackp->yytops.yylookaheadNeeds[yyk] = yytrue;
7606
7607
2/2
✓ Branch 0 taken 3568 times.
✓ Branch 1 taken 21996 times.
25564 for (/* nothing */; *yyconflicts; yyconflicts += 1)
7608 {
7609 YYRESULTTAG yyflag;
7610 3568 YYPTRDIFF_T yynewStack = yysplitStack (yystackp, yyk);
7611 3568 YY_DPRINTF ((stderr, "Splitting off stack %ld from %ld.\n",
7612 YY_CAST (long, yynewStack), YY_CAST (long, yyk)));
7613 7136 yyflag = yyglrReduce (yystackp, yynewStack,
7614 3568 *yyconflicts,
7615 3568 yyimmediate[*yyconflicts], root);
7616
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3568 times.
3568 if (yyflag == yyok)
7617
1/2
✓ Branch 0 taken 3568 times.
✗ Branch 1 not taken.
3568 YYCHK (yyprocessOneStack (yystackp, yynewStack,
7618 yyposn, root));
7619 else if (yyflag == yyerr)
7620 {
7621 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yynewStack)));
7622 yymarkStackDeleted (yystackp, yynewStack);
7623 }
7624 else
7625 return yyflag;
7626 3568 }
7627
7628
2/2
✓ Branch 0 taken 18428 times.
✓ Branch 1 taken 3568 times.
21996 if (yyisShiftAction (yyaction))
7629 3568 break;
7630
2/2
✓ Branch 0 taken 14860 times.
✓ Branch 1 taken 3568 times.
18428 else if (yyisErrorAction (yyaction))
7631 {
7632 3568 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yyk)));
7633 3568 yymarkStackDeleted (yystackp, yyk);
7634 3568 break;
7635 }
7636 else
7637 {
7638 29720 YYRESULTTAG yyflag = yyglrReduce (yystackp, yyk, -yyaction,
7639 14860 yyimmediate[-yyaction], root);
7640
1/2
✓ Branch 0 taken 14860 times.
✗ Branch 1 not taken.
14860 if (yyflag == yyerr)
7641 {
7642 YY_DPRINTF ((stderr,
7643 "Stack %ld dies "
7644 "(predicate failure or explicit user error).\n",
7645 YY_CAST (long, yyk)));
7646 yymarkStackDeleted (yystackp, yyk);
7647 break;
7648 }
7649
1/2
✓ Branch 0 taken 14860 times.
✗ Branch 1 not taken.
14860 else if (yyflag != yyok)
7650 return yyflag;
7651 }
7652 }
7653 }
7654 10704 return yyok;
7655 10704 }
7656
7657 /* Put in YYARG at most YYARGN of the expected tokens given the
7658 current YYSTACKP, and return the number of tokens stored in YYARG. If
7659 YYARG is null, return the number of expected tokens (guaranteed to
7660 be less than YYNTOKENS). */
7661 static int
7662 57 yypcontext_expected_tokens (const yyGLRStack* yystackp,
7663 yysymbol_kind_t yyarg[], int yyargn)
7664 {
7665 /* Actual size of YYARG. */
7666 57 int yycount = 0;
7667 57 int yyn = yypact[yystackp->yytops.yystates[0]->yylrState];
7668
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (!yypact_value_is_default (yyn))
7669 {
7670 /* Start YYX at -YYN if negative to avoid negative indexes in
7671 YYCHECK. In other words, skip the first -YYN actions for
7672 this state because they are default actions. */
7673
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
57 int yyxbegin = yyn < 0 ? -yyn : 0;
7674 /* Stay within bounds of both yycheck and yytname. */
7675 57 int yychecklim = YYLAST - yyn + 1;
7676
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
7677 int yyx;
7678
2/2
✓ Branch 0 taken 7043 times.
✓ Branch 1 taken 53 times.
7096 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
7679
3/4
✓ Branch 0 taken 119 times.
✓ Branch 1 taken 6924 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 119 times.
7043 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
7680 7039 && !yytable_value_is_error (yytable[yyx + yyn]))
7681 {
7682
1/2
✓ Branch 0 taken 119 times.
✗ Branch 1 not taken.
119 if (!yyarg)
7683 ++yycount;
7684
2/2
✓ Branch 0 taken 115 times.
✓ Branch 1 taken 4 times.
119 else if (yycount == yyargn)
7685 4 return 0;
7686 else
7687 115 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
7688 115 }
7689 53 }
7690
2/6
✓ Branch 0 taken 53 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 53 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
53 if (yyarg && yycount == 0 && 0 < yyargn)
7691 yyarg[0] = YYSYMBOL_YYEMPTY;
7692 53 return yycount;
7693 57 }
7694
7695 static int
7696 57 yy_syntax_error_arguments (const yyGLRStack* yystackp,
7697 yysymbol_kind_t yyarg[], int yyargn)
7698 {
7699
3/6
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
✓ Branch 2 taken 57 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 57 times.
✗ Branch 5 not taken.
57 yysymbol_kind_t yytoken = yychar == TOK_YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
7700 /* Actual size of YYARG. */
7701 57 int yycount = 0;
7702 /* There are many possibilities here to consider:
7703 - If this state is a consistent state with a default action, then
7704 the only way this function was invoked is if the default action
7705 is an error action. In that case, don't check for expected
7706 tokens because there are none.
7707 - The only way there can be no lookahead present (in yychar) is if
7708 this state is a consistent state with a default action. Thus,
7709 detecting the absence of a lookahead is sufficient to determine
7710 that there is no unexpected or expected token to report. In that
7711 case, just report a simple "syntax error".
7712 - Don't assume there isn't a lookahead just because this state is a
7713 consistent state with a default action. There might have been a
7714 previous inconsistent state, consistent state with a non-default
7715 action, or user semantic action that manipulated yychar.
7716 - Of course, the expected token list depends on states to have
7717 correct lookahead information, and it depends on the parser not
7718 to perform extra reductions after fetching a lookahead from the
7719 scanner and before detecting a syntax error. Thus, state merging
7720 (from LALR or IELR) and default reductions corrupt the expected
7721 token list. However, the list is correct for canonical LR with
7722 one exception: it will still contain any token that will not be
7723 accepted due to an error action in a later state.
7724 */
7725
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yytoken != YYSYMBOL_YYEMPTY)
7726 {
7727 int yyn;
7728
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yyarg)
7729 57 yyarg[yycount] = yytoken;
7730 57 ++yycount;
7731 114 yyn = yypcontext_expected_tokens (yystackp,
7732
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
57 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
7733
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yyn == YYENOMEM)
7734 return YYENOMEM;
7735 else
7736 57 yycount += yyn;
7737 57 }
7738 57 return yycount;
7739 57 }
7740
7741
7742
7743 static void
7744 57 yyreportSyntaxError (yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root)
7745 {
7746
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yystackp->yyerrState != 0)
7747 return;
7748 {
7749 57 yybool yysize_overflow = yyfalse;
7750 57 char* yymsg = YY_NULLPTR;
7751 enum { YYARGS_MAX = 5 };
7752 /* Internationalized format string. */
7753 57 const char *yyformat = YY_NULLPTR;
7754 /* Arguments of yyformat: reported tokens (one for the "unexpected",
7755 one per "expected"). */
7756 yysymbol_kind_t yyarg[YYARGS_MAX];
7757 /* Cumulated lengths of YYARG. */
7758 57 YYPTRDIFF_T yysize = 0;
7759
7760 /* Actual size of YYARG. */
7761 57 int yycount
7762 57 = yy_syntax_error_arguments (yystackp, yyarg, YYARGS_MAX);
7763
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
57 if (yycount == YYENOMEM)
7764 yyMemoryExhausted (yystackp);
7765
7766
3/7
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✓ Branch 3 taken 7 times.
✓ Branch 4 taken 46 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
57 switch (yycount)
7767 {
7768 #define YYCASE_(N, S) \
7769 case N: \
7770 yyformat = S; \
7771 break
7772 default: /* Avoid compiler warnings. */
7773 YYCASE_(0, YY_("syntax error"));
7774 4 YYCASE_(1, YY_("syntax error, unexpected %s"));
7775 7 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
7776 46 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
7777 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
7778 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
7779 #undef YYCASE_
7780 }
7781
7782 /* Compute error message size. Don't count the "%s"s, but reserve
7783 room for the terminator. */
7784 57 yysize = yystrlen (yyformat) - 2 * yycount + 1;
7785 {
7786 int yyi;
7787
2/2
✓ Branch 0 taken 156 times.
✓ Branch 1 taken 57 times.
213 for (yyi = 0; yyi < yycount; ++yyi)
7788 {
7789 156 YYPTRDIFF_T yysz
7790 156 = yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
7791
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 156 times.
156 if (YYSIZE_MAXIMUM - yysize < yysz)
7792 yysize_overflow = yytrue;
7793 else
7794 156 yysize += yysz;
7795 156 }
7796 }
7797
7798
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (!yysize_overflow)
7799 57 yymsg = YY_CAST (char *, YYMALLOC (YY_CAST (YYSIZE_T, yysize)));
7800
7801
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
57 if (yymsg)
7802 {
7803 57 char *yyp = yymsg;
7804 57 int yyi = 0;
7805
2/2
✓ Branch 0 taken 2401 times.
✓ Branch 1 taken 57 times.
2458 while ((*yyp = *yyformat))
7806 {
7807
4/6
✓ Branch 0 taken 156 times.
✓ Branch 1 taken 2245 times.
✓ Branch 2 taken 156 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 156 times.
2401 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
7808 {
7809 156 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
7810 156 yyformat += 2;
7811 156 }
7812 else
7813 {
7814 2245 ++yyp;
7815 2245 ++yyformat;
7816 }
7817 }
7818 57 yyerror (root, yymsg);
7819 57 YYFREE (yymsg);
7820 57 }
7821 else
7822 {
7823 yyerror (root, YY_("syntax error"));
7824 yyMemoryExhausted (yystackp);
7825 }
7826 }
7827 57 yynerrs += 1;
7828 57 }
7829
7830 /* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP,
7831 yylval, and yylloc are the syntactic category, semantic value, and location
7832 of the lookahead. */
7833 static void
7834 57 yyrecoverSyntaxError (yyGLRStack* yystackp, std::shared_ptr<ZScript::ASTFile>& root)
7835 {
7836
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yystackp->yyerrState == 3)
7837 /* We just shifted the error token and (perhaps) took some
7838 reductions. Skip tokens until we can proceed. */
7839 while (yytrue)
7840 {
7841 yysymbol_kind_t yytoken;
7842 int yyj;
7843 if (yychar == TOK_YYEOF)
7844 yyFail (yystackp, root, YY_NULLPTR);
7845 if (yychar != TOK_YYEMPTY)
7846 {
7847 /* We throw away the lookahead, but the error range
7848 of the shifted error token must take it into account. */
7849 yyGLRState *yys = yystackp->yytops.yystates[0];
7850 yyGLRStackItem yyerror_range[3];
7851 yyerror_range[1].yystate.yyloc = yys->yyloc;
7852 yyerror_range[2].yystate.yyloc = yylloc;
7853 YYLLOC_DEFAULT ((yys->yyloc), yyerror_range, 2);
7854 yytoken = YYTRANSLATE (yychar);
7855 yydestruct ("Error: discarding",
7856 yytoken, &yylval, &yylloc, root);
7857 yychar = TOK_YYEMPTY;
7858 }
7859 yytoken = yygetToken (&yychar, root);
7860 yyj = yypact[yystackp->yytops.yystates[0]->yylrState];
7861 if (yypact_value_is_default (yyj))
7862 return;
7863 yyj += yytoken;
7864 if (yyj < 0 || YYLAST < yyj || yycheck[yyj] != yytoken)
7865 {
7866 if (yydefact[yystackp->yytops.yystates[0]->yylrState] != 0)
7867 return;
7868 }
7869 else if (! yytable_value_is_error (yytable[yyj]))
7870 return;
7871 }
7872
7873 /* Reduce to one stack. */
7874 {
7875 YYPTRDIFF_T yyk;
7876
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 for (yyk = 0; yyk < yystackp->yytops.yysize; yyk += 1)
7877
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
7878 57 break;
7879
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
57 if (yyk >= yystackp->yytops.yysize)
7880 yyFail (yystackp, root, YY_NULLPTR);
7881
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 for (yyk += 1; yyk < yystackp->yytops.yysize; yyk += 1)
7882 yymarkStackDeleted (yystackp, yyk);
7883 57 yyremoveDeletes (yystackp);
7884 57 yycompressStack (yystackp);
7885 }
7886
7887 /* Pop stack until we find a state that shifts the error token. */
7888 57 yystackp->yyerrState = 3;
7889
2/2
✓ Branch 0 taken 57 times.
✓ Branch 1 taken 492 times.
549 while (yystackp->yytops.yystates[0] != YY_NULLPTR)
7890 {
7891 492 yyGLRState *yys = yystackp->yytops.yystates[0];
7892 492 int yyj = yypact[yys->yylrState];
7893
2/2
✓ Branch 0 taken 57 times.
✓ Branch 1 taken 435 times.
492 if (! yypact_value_is_default (yyj))
7894 {
7895 435 yyj += YYSYMBOL_YYerror;
7896
2/6
✓ Branch 0 taken 435 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 435 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
435 if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYSYMBOL_YYerror
7897
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 435 times.
435 && yyisShiftAction (yytable[yyj]))
7898 {
7899 /* Shift the error token. */
7900 int yyaction = yytable[yyj];
7901 /* First adjust its location.*/
7902 YYLTYPE yyerrloc;
7903 yystackp->yyerror_range[2].yystate.yyloc = yylloc;
7904 YYLLOC_DEFAULT (yyerrloc, (yystackp->yyerror_range), 2);
7905 YY_SYMBOL_PRINT ("Shifting", yy_accessing_symbol (yyaction),
7906 &yylval, &yyerrloc);
7907 yyglrShift (yystackp, 0, yyaction,
7908 yys->yyposn, &yylval, &yyerrloc);
7909 yys = yystackp->yytops.yystates[0];
7910 break;
7911 }
7912 435 }
7913 492 yystackp->yyerror_range[1].yystate.yyloc = yys->yyloc;
7914
2/2
✓ Branch 0 taken 435 times.
✓ Branch 1 taken 57 times.
492 if (yys->yypred != YY_NULLPTR)
7915 435 yydestroyGLRState ("Error: popping", yys, root);
7916 492 yystackp->yytops.yystates[0] = yys->yypred;
7917 492 yystackp->yynextFree -= 1;
7918 492 yystackp->yyspaceLeft += 1;
7919 }
7920
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yystackp->yytops.yystates[0] == YY_NULLPTR)
7921 57 yyFail (yystackp, root, YY_NULLPTR);
7922 }
7923
7924 #define YYCHK1(YYE) \
7925 do { \
7926 switch (YYE) { \
7927 case yyok: break; \
7928 case yyabort: goto yyabortlab; \
7929 case yyaccept: goto yyacceptlab; \
7930 case yyerr: goto yyuser_error; \
7931 case yynomem: goto yyexhaustedlab; \
7932 default: goto yybuglab; \
7933 } \
7934 } while (0)
7935
7936 /*----------.
7937 | yyparse. |
7938 `----------*/
7939
7940 int
7941 55556 yyparse (std::shared_ptr<ZScript::ASTFile>& root)
7942 {
7943 int yyresult;
7944 yyGLRStack yystack;
7945 55556 yyGLRStack* const yystackp = &yystack;
7946 YYPTRDIFF_T yyposn;
7947
7948 55556 YY_DPRINTF ((stderr, "Starting parse\n"));
7949
7950 55556 yychar = TOK_YYEMPTY;
7951 55556 yylval = yyval_default;
7952 55556 yylloc = yyloc_default;
7953
7954
1/2
✓ Branch 0 taken 55556 times.
✗ Branch 1 not taken.
55556 if (! yyinitGLRStack (yystackp, YYINITDEPTH))
7955 goto yyexhaustedlab;
7956
2/4
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 55499 times.
✗ Branch 3 not taken.
55556 switch (YYSETJMP (yystack.yyexception_buffer))
7957 {
7958 55499 case 0: break;
7959 57 case 1: goto yyabortlab;
7960 case 2: goto yyexhaustedlab;
7961 default: goto yybuglab;
7962 }
7963 55499 yyglrShift (&yystack, 0, 0, 0, &yylval, &yylloc);
7964 55499 yyposn = 0;
7965
7966 55556 while (yytrue)
7967 {
7968 /* For efficiency, we have two loops, the first of which is
7969 specialized to deterministic operation (single stack, no
7970 potential ambiguity). */
7971 /* Standard mode. */
7972 472092152 while (yytrue)
7973 {
7974 472092152 yy_state_t yystate = yystack.yytops.yystates[0]->yylrState;
7975 472092152 YY_DPRINTF ((stderr, "Entering state %d\n", yystate));
7976
2/2
✓ Branch 0 taken 472036653 times.
✓ Branch 1 taken 55499 times.
472092152 if (yystate == YYFINAL)
7977 55499 goto yyacceptlab;
7978
2/2
✓ Branch 0 taken 185575604 times.
✓ Branch 1 taken 286461049 times.
472036653 if (yyisDefaultedState (yystate))
7979 {
7980 185575604 yyRuleNum yyrule = yydefaultAction (yystate);
7981
1/2
✓ Branch 0 taken 185575604 times.
✗ Branch 1 not taken.
185575604 if (yyrule == 0)
7982 {
7983 yystack.yyerror_range[1].yystate.yyloc = yylloc;
7984 yyreportSyntaxError (&yystack, root);
7985 goto yyuser_error;
7986 }
7987
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 185575604 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
185575604 YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue, root));
7988 185575604 }
7989 else
7990 {
7991 286461049 yysymbol_kind_t yytoken = yygetToken (&yychar, root);
7992 const short* yyconflicts;
7993 286461049 int yyaction = yygetLRActions (yystate, yytoken, &yyconflicts);
7994
2/2
✓ Branch 0 taken 286457481 times.
✓ Branch 1 taken 3568 times.
286461049 if (*yyconflicts)
7995 /* Enter nondeterministic mode. */
7996 3568 break;
7997
2/2
✓ Branch 0 taken 75772402 times.
✓ Branch 1 taken 210685079 times.
286457481 if (yyisShiftAction (yyaction))
7998 {
7999 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
8000 75772402 yychar = TOK_YYEMPTY;
8001 75772402 yyposn += 1;
8002 75772402 yyglrShift (&yystack, 0, yyaction, yyposn, &yylval, &yylloc);
8003
1/2
✓ Branch 0 taken 75772402 times.
✗ Branch 1 not taken.
75772402 if (0 < yystack.yyerrState)
8004 yystack.yyerrState -= 1;
8005 75772402 }
8006
2/2
✓ Branch 0 taken 210685022 times.
✓ Branch 1 taken 57 times.
210685079 else if (yyisErrorAction (yyaction))
8007 {
8008 57 yystack.yyerror_range[1].yystate.yyloc = yylloc;
8009 /* Issue an error message unless the scanner already
8010 did. */
8011
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57 times.
57 if (yychar != TOK_YYerror)
8012 57 yyreportSyntaxError (&yystack, root);
8013 57 goto yyuser_error;
8014 }
8015 else
8016
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 210685022 times.
✗ Branch 5 not taken.
210685022 YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue, root));
8017 }
8018 }
8019
8020 /* Nondeterministic mode. */
8021 3568 while (yytrue)
8022 {
8023 yysymbol_kind_t yytoken_to_shift;
8024 YYPTRDIFF_T yys;
8025
8026
2/2
✓ Branch 0 taken 3568 times.
✓ Branch 1 taken 3568 times.
7136 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
8027 3568 yystackp->yytops.yylookaheadNeeds[yys] = yychar != TOK_YYEMPTY;
8028
8029 /* yyprocessOneStack returns one of three things:
8030
8031 - An error flag. If the caller is yyprocessOneStack, it
8032 immediately returns as well. When the caller is finally
8033 yyparse, it jumps to an error label via YYCHK1.
8034
8035 - yyok, but yyprocessOneStack has invoked yymarkStackDeleted
8036 (&yystack, yys), which sets the top state of yys to NULL. Thus,
8037 yyparse's following invocation of yyremoveDeletes will remove
8038 the stack.
8039
8040 - yyok, when ready to shift a token.
8041
8042 Except in the first case, yyparse will invoke yyremoveDeletes and
8043 then shift the next token onto all remaining stacks. This
8044 synchronization of the shift (that is, after all preceding
8045 reductions on all stacks) helps prevent double destructor calls
8046 on yylval in the event of memory exhaustion. */
8047
8048
2/2
✓ Branch 0 taken 7136 times.
✓ Branch 1 taken 3568 times.
10704 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
8049
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 7136 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
7136 YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn, root));
8050 3568 yyremoveDeletes (&yystack);
8051
1/2
✓ Branch 0 taken 3568 times.
✗ Branch 1 not taken.
3568 if (yystack.yytops.yysize == 0)
8052 {
8053 yyundeleteLastStack (&yystack);
8054 if (yystack.yytops.yysize == 0)
8055 yyFail (&yystack, root, YY_("syntax error"));
8056 YYCHK1 (yyresolveStack (&yystack, root));
8057 YY_DPRINTF ((stderr, "Returning to deterministic operation.\n"));
8058 yystack.yyerror_range[1].yystate.yyloc = yylloc;
8059 yyreportSyntaxError (&yystack, root);
8060 goto yyuser_error;
8061 }
8062
8063 /* If any yyglrShift call fails, it will fail after shifting. Thus,
8064 a copy of yylval will already be on stack 0 in the event of a
8065 failure in the following loop. Thus, yychar is set to TOK_YYEMPTY
8066 before the loop to make sure the user destructor for yylval isn't
8067 called twice. */
8068
2/4
✓ Branch 0 taken 3568 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3568 times.
3568 yytoken_to_shift = YYTRANSLATE (yychar);
8069 3568 yychar = TOK_YYEMPTY;
8070 3568 yyposn += 1;
8071
2/2
✓ Branch 0 taken 3568 times.
✓ Branch 1 taken 3568 times.
7136 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
8072 {
8073 3568 yy_state_t yystate = yystack.yytops.yystates[yys]->yylrState;
8074 const short* yyconflicts;
8075 3568 int yyaction = yygetLRActions (yystate, yytoken_to_shift,
8076 &yyconflicts);
8077 /* Note that yyconflicts were handled by yyprocessOneStack. */
8078 3568 YY_DPRINTF ((stderr, "On stack %ld, ", YY_CAST (long, yys)));
8079 YY_SYMBOL_PRINT ("shifting", yytoken_to_shift, &yylval, &yylloc);
8080 3568 yyglrShift (&yystack, yys, yyaction, yyposn,
8081 &yylval, &yylloc);
8082 3568 YY_DPRINTF ((stderr, "Stack %ld now in state %d\n",
8083 YY_CAST (long, yys),
8084 yystack.yytops.yystates[yys]->yylrState));
8085 3568 }
8086
8087
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3568 times.
3568 if (yystack.yytops.yysize == 1)
8088 {
8089
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3568 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3568 YYCHK1 (yyresolveStack (&yystack, root));
8090 3568 YY_DPRINTF ((stderr, "Returning to deterministic operation.\n"));
8091 3568 yycompressStack (&yystack);
8092 3568 break;
8093 }
8094 }
8095 3568 continue;
8096 yyuser_error:
8097 57 yyrecoverSyntaxError (&yystack, root);
8098 57 yyposn = yystack.yytops.yystates[0]->yyposn;
8099 }
8100
8101 yyacceptlab:
8102 55499 yyresult = 0;
8103 55499 goto yyreturnlab;
8104
8105 yybuglab:
8106 YY_ASSERT (yyfalse);
8107 goto yyabortlab;
8108
8109 yyabortlab:
8110 57 yyresult = 1;
8111 57 goto yyreturnlab;
8112
8113 yyexhaustedlab:
8114 yyerror (root, YY_("memory exhausted"));
8115 yyresult = 2;
8116 goto yyreturnlab;
8117
8118 yyreturnlab:
8119
2/2
✓ Branch 0 taken 55499 times.
✓ Branch 1 taken 57 times.
55556 if (yychar != TOK_YYEMPTY)
8120 57 yydestruct ("Cleanup: discarding lookahead",
8121
2/4
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 57 times.
57 YYTRANSLATE (yychar), &yylval, &yylloc, root);
8122
8123 /* If the stack is well-formed, pop the stack until it is empty,
8124 destroying its entries as we go. But free the stack regardless
8125 of whether it is well-formed. */
8126
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 55556 times.
55556 if (yystack.yyitems)
8127 {
8128 55556 yyGLRState** yystates = yystack.yytops.yystates;
8129
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 55556 times.
55556 if (yystates)
8130 {
8131 55556 YYPTRDIFF_T yysize = yystack.yytops.yysize;
8132 YYPTRDIFF_T yyk;
8133
2/2
✓ Branch 0 taken 57 times.
✓ Branch 1 taken 55556 times.
55613 for (yyk = 0; yyk < yysize; yyk += 1)
8134
2/2
✓ Branch 0 taken 57 times.
✓ Branch 1 taken 55499 times.
55556 if (yystates[yyk])
8135 {
8136
2/2
✓ Branch 0 taken 166497 times.
✓ Branch 1 taken 55499 times.
221996 while (yystates[yyk])
8137 {
8138 166497 yyGLRState *yys = yystates[yyk];
8139 166497 yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;
8140
2/2
✓ Branch 0 taken 110998 times.
✓ Branch 1 taken 55499 times.
166497 if (yys->yypred != YY_NULLPTR)
8141 110998 yydestroyGLRState ("Cleanup: popping", yys, root);
8142 166497 yystates[yyk] = yys->yypred;
8143 166497 yystack.yynextFree -= 1;
8144 166497 yystack.yyspaceLeft += 1;
8145 }
8146 55499 break;
8147 }
8148 55556 }
8149 55556 yyfreeGLRStack (&yystack);
8150 55556 }
8151
8152 55556 return yyresult;
8153 }
8154
8155 /* DEBUGGING ONLY */
8156 #if YYDEBUG
8157 /* Print *YYS and its predecessors. */
8158 static void
8159 yy_yypstack (yyGLRState* yys)
8160 {
8161 if (yys->yypred)
8162 {
8163 yy_yypstack (yys->yypred);
8164 YY_FPRINTF ((stderr, " -> "));
8165 }
8166 YY_FPRINTF ((stderr, "%d@%ld", yys->yylrState, YY_CAST (long, yys->yyposn)));
8167 }
8168
8169 /* Print YYS (possibly NULL) and its predecessors. */
8170 static void
8171 yypstates (yyGLRState* yys)
8172 {
8173 if (yys == YY_NULLPTR)
8174 YY_FPRINTF ((stderr, "<null>"));
8175 else
8176 yy_yypstack (yys);
8177 YY_FPRINTF ((stderr, "\n"));
8178 }
8179
8180 /* Print the stack #YYK. */
8181 static void
8182 yypstack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
8183 {
8184 yypstates (yystackp->yytops.yystates[yyk]);
8185 }
8186
8187 /* Print all the stacks. */
8188 static void
8189 yypdumpstack (yyGLRStack* yystackp)
8190 {
8191 #define YYINDEX(YYX) \
8192 YY_CAST (long, \
8193 ((YYX) \
8194 ? YY_REINTERPRET_CAST (yyGLRStackItem*, (YYX)) - yystackp->yyitems \
8195 : -1))
8196
8197 yyGLRStackItem* yyp;
8198 for (yyp = yystackp->yyitems; yyp < yystackp->yynextFree; yyp += 1)
8199 {
8200 YY_FPRINTF ((stderr, "%3ld. ",
8201 YY_CAST (long, yyp - yystackp->yyitems)));
8202 if (*YY_REINTERPRET_CAST (yybool *, yyp))
8203 {
8204 YY_ASSERT (yyp->yystate.yyisState);
8205 YY_ASSERT (yyp->yyoption.yyisState);
8206 YY_FPRINTF ((stderr, "Res: %d, LR State: %d, posn: %ld, pred: %ld",
8207 yyp->yystate.yyresolved, yyp->yystate.yylrState,
8208 YY_CAST (long, yyp->yystate.yyposn),
8209 YYINDEX (yyp->yystate.yypred)));
8210 if (! yyp->yystate.yyresolved)
8211 YY_FPRINTF ((stderr, ", firstVal: %ld",
8212 YYINDEX (yyp->yystate.yysemantics.yyfirstVal)));
8213 }
8214 else
8215 {
8216 YY_ASSERT (!yyp->yystate.yyisState);
8217 YY_ASSERT (!yyp->yyoption.yyisState);
8218 YY_FPRINTF ((stderr, "Option. rule: %d, state: %ld, next: %ld",
8219 yyp->yyoption.yyrule - 1,
8220 YYINDEX (yyp->yyoption.yystate),
8221 YYINDEX (yyp->yyoption.yynext)));
8222 }
8223 YY_FPRINTF ((stderr, "\n"));
8224 }
8225
8226 YY_FPRINTF ((stderr, "Tops:"));
8227 {
8228 YYPTRDIFF_T yyi;
8229 for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
8230 YY_FPRINTF ((stderr, "%ld: %ld; ", YY_CAST (long, yyi),
8231 YYINDEX (yystackp->yytops.yystates[yyi])));
8232 YY_FPRINTF ((stderr, "\n"));
8233 }
8234 #undef YYINDEX
8235 }
8236 #endif
8237
8238 #undef yylval
8239 #undef yychar
8240 #undef yynerrs
8241 #undef yylloc
8242
8243
8244
8245
8246 #line 2487 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
8247
8248
8249 /* programs */
8250
8251 std::string yyerrstr(string const& msg, int32_t row, int32_t col, char const* txt)
8252 {
8253 ostringstream out;
8254 out << msg << " ["
8255 << curfilename << " "
8256 << "Line " << row << " "
8257 << "Column " << col;
8258 if (yyleng)
8259 out << " '" << txt << "'";
8260 out << "]";
8261 return out.str();
8262 }
8263 void yymsg(string const& message, int32_t row, int32_t col, char const* txt)
8264 {
8265 zconsole_info(yyerrstr(message,row,col,txt).c_str());
8266 }
8267 void yywarn(string const& message, int32_t row, int32_t col, char const* txt)
8268 {
8269 zconsole_warn(yyerrstr(message,row,col,txt).c_str());
8270 zparser_warn_out(message);
8271 }
8272 void yyerrmsg(string const& message, int32_t row, int32_t col, char const* txt)
8273 {
8274 zconsole_error(yyerrstr(message,row,col,txt).c_str());
8275 zparser_error_out(message);
8276 }
8277 void yydb(string const& message, int32_t row, int32_t col, char const* txt)
8278 {
8279 zconsole_db(yyerrstr(message,row,col,txt).c_str());
8280 }
8281
8282 void yyerror(std::shared_ptr<ASTFile>&, const char *s)
8283 {
8284 yyerrmsg(s);
8285 }
8286
8287 namespace ZScript
8288 {
8289 std::shared_ptr<ASTFile> parseFile(std::string const& filename)
8290 {
8291 std::shared_ptr<ASTFile> result;
8292
8293 // Reset lexer.
8294 yyin = NULL;
8295 resetLexer();
8296
8297 // Read in the file.
8298 yyin = fopen(filename.c_str(), "r");
8299 yyout = std::tmpfile();
8300 if (!yyin)
8301 {
8302 zconsole_error("Can't open input file");
8303 return nullptr;
8304 }
8305 curfilename = filename;
8306
8307 // Run the parser.
8308 if (yyparse(result))
8309 {
8310 result.reset();
8311 }
8312 fclose(yyout);
8313 fclose(yyin);
8314
8315 return result;
8316 }
8317 };
8318